尝试将float()放在任何地方,但我仍然得到相同的消息。
def getAmountOfCarbon(volume):
carbon = 1.8 + 2 * math.log(volume)
return carbon
carbon = []
for listitem in lists:
carbonlist = getAmountOfCarbon(volume)
carbon.append(carbonlist)
我的列表变量是一个函数:
lists = readCSVfile(str1)
print carbon
TypeError: a float is required
我应该把我的浮动()放在哪里?
编辑:卷来自:
def getVolume(width, height, length):
volume = (width) * (height) * (length)
return volume
编辑: 我在这里打电话:
volume = []
for listitem in lists:
volumelist = getVolume(listitem[2], listitem[3], listitem[4])
volume.append(volumelist)
编辑: 以不同的方式解决了它:
def createAnalyseList(lists):
analyselist = []
for item in lists:
height = getHeightType(item[4])
carbon = getAmountOfCarbon(getVolume(item[2],item[3],item[4]))
analyselist.append([item[0], item[1], height, carbon])
print analyselist
return analyselist
analyselist = createAnalyseList(lists)
答案 0 :(得分:0)
进行一些更改,假设您的列表变量是一个int / floats列表我已成功执行您的示例(也假设listitem
和volume
相同):
import math
def getAmountOfCarbon(volume):
carbon = 1.8 + 2 * math.log(volume)
return carbon
carbon = []
lists = [1.0, 5, 47, 89]
for listitem in lists:
carbonlist = getAmountOfCarbon(listitem)
carbon.append(carbonlist)
print carbon
答案 1 :(得分:0)
好的,我想我现在看到了问题所在。您似乎在代码中执行此操作:
lists = readCSVfile(str1)
volume = []
for listitem in lists:
volumelist = getVolume(listitem[2], listitem[3], listitem[4])
volume.append(volumelist)
carbon = []
for listitem in lists:
carbonlist = getAmountOfCarbon(volume)
carbon.append(carbonlist)
此处,第二个循环中的volume
仍然是在第一个循环中创建的整个卷列表,并且您正尝试将该列表转换为一个" carbon&# 34;值{(TypeError
)并将其附加到原始carbon
中每个值的lists
列表中!这似乎没有多大意义。
相反,试试这个:
carbon = []
for listitem in volume:
carbonlist = getAmountOfCarbon(listitem)
carbon.append(carbonlist)
或使用map
(仅限Python 2):
carbon = map(getAmountOfCarbon, volume)
或者作为列表理解:
carbon = [getAmountOfCarbon(x) for x in volume]
或者一下子(未经测试):
carbon = [getAmountOfCarbon(volume(*lst[2:5])) for lst in lists]
另请注意,readCSVfile
功能中的代码全部重复。你可以这样做:
def readCSVfile(str1):
with open(str1 + '.csv', 'r+') as f:
....