簡體   English   中英

Python錯誤:-:'float'和'NoneType'不受支持的操作數類型

[英]Python error: unsupported operand type(s) for -: 'float' and 'NoneType'

我的代碼應該互相讀取和減去兩個數據列表。 為什么會收到此錯誤,我該如何解決?

這是完整的錯誤:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "spectra.py", line 32, in SpectraTest
    subt = map(sub, flux, flux1)
TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'

這是代碼:

import csv

def SpectraTest():
    wave_num = []
    flux = []
    wave_num1=[]
    flux1 = []
    with open ("H20_Glass.CSV", "rb") as csvfile:
        datareader= csv.reader(csvfile, delimiter = ",")
        for row in datareader:
            tempdata = row
            wn = tempdata[0]
            f1 = tempdata [1]
            wn = eval(wn)
            f1 = eval(f1)
            wave_num.append(wn)
            flux.append(f1)

    with open ("blankGlass.CSV", "rb") as csvfile:
        datareader= csv.reader(csvfile, delimiter = ",")
        for row in datareader:
            tempdata1 = row
            wn1 = tempdata1[0]
            f2 = tempdata1[1]
            wn1 = eval(wn1)
            f2 = eval(f2)
            wave_num1.append(wn1)
            flux1.append(f2)
        map(float, flux1)
        map(float, flux)
        from operator import sub
        subt = map(sub, flux, flux1)
        wave_num1.reverse()
        wave_num.reverse()
        print("Number of wave numbers " + str(len(wave_num1)))
        print("Number of flux numbers = "+ str(len(flux1)))

        print("Number of wave numbers " + str(len(wave_num)))
        print("Number of flux numbers = "+ str(len(flux)))
        print subt
    csvfile.close()

從Python文檔中:

map(函數,可迭代,...)

...如果一個可迭代項短於另一個可迭代項,則假定它擴展為None。

我猜您的列表長度不一樣,因此它試圖從浮點數中減去None。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM