我有一大堆代码,用于打印带有数字的单词。
import Lab4
def priceList(myList):
for item in myList:
result = Lab4.getGroceryList() + Lab4.getPrice(item)
print(result)
但是当我运行它时,python会抛出此错误
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print(priceList(myList))
File "C:/Users/Christopher/Desktop/Lab4/total.py", line 5, in priceList
result = Lab4.getGroceryList() + Lab4.getPrice(item)
TypeError: can only concatenate list (not "float") to list
我不知道为什么会抛出我正在调用的代码
def getPriceList():
global price_list;
result = [];
f = open("price_list.txt","r");
for line in f:
temp = line.split(" ");
item = [ temp[0].strip() ];
item = item + [ float(temp[1])];
result = result + [ item ];
price_list = result;
return result;
getPrice函数返回传递的项目的价格 作为参数。如果该项目不在价目表中,则返回0.0。
def getPrice(item):
if len(price_list) == 0:
getPriceList()
for line in price_list:
if item == line[0]:
return line[1];
return 0.0;
为什么会失败?
答案 0 :(得分:1)
您无法一起添加列表和浮动。将float添加到列表中,如下所示:
result = Lab4.getGroceryList()
result.append(Lab4.getPrice(item))
或者在添加之前将浮动放入列表中。像这样:
result = Lab4.getGroceryList() + [Lab4.getPrice(item)]
另外,请不要在python中使用分号!
答案 1 :(得分:1)
你在这里做到了:
result = result + [ item ];
虽然有更多经验,但你会把它写成:
result.append(item)
代替。这里需要同样的事情:
result = Lab4.getGroceryList() + Lab4.getPrice(item)
如果getGroceryList()
返回一个列表,而getPrice(item)
返回一个浮点数,则不能只添加它们。类似于你在其他地方所做的,
result = Lab4.getGroceryList() + [Lab4.getPrice(item)]
会奏效。好吧,它会孤立地工作。您的priceList()
函数也有其他问题; - )
答案 2 :(得分:1)
如果要将加法运算符与列表一起使用,则需要先将浮点数转换为列表。加法运算符基本上类似于extend
方法,因此在这种情况下,两个操作数都必须属于列表类型。
result = Lab4.getGroceryList() + [Lab4.getPrice(item)]
虽然由于价格已经不是一个列表,因此将它附加到您的列表更有意义,如下所示:
result = Lab4.getGroceryList().append(Lab4.getPrice(item))