2

我有一段代码假设用数字打印一个单词。

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;

为什么会失败?

4

3 回答 3

2

您不能同时添加列表和浮点数。将浮动附加到列表中,如下所示:

result = Lab4.getGroceryList()
result.append(Lab4.getPrice(item))

或者在添加之前将浮点数放入列表中。像这样:

result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

另外,请不要在 python 中使用分号!

于 2013-10-10T02:35:31.147 回答
1

你在这里做到了:

result = result + [ item ];

不过,如果有更多经验,您会写成:

result.append(item)

反而。这里需要同样的东西:

  result = Lab4.getGroceryList() + Lab4.getPrice(item)

如果getGroceryList()返回一个列表并getPrice(item)返回一个浮点数,则不能只添加它们。类似于你在其他地方所做的,

  result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

会工作。好吧,它会孤立地工作。您的priceList()功能也有其他问题;-)

于 2013-10-10T02:37:01.317 回答
1

如果要将加法运算符与列表一起使用,则需要先将浮点数转换为列表。加法运算符基本上类似于extend方法,因此在这种情况下,两个操作数都需要是列表类型。

result = Lab4.getGroceryList() + [Lab4.getPrice(item)]

虽然由于价格还不是一个列表,但将其附加到您的列表中会更有意义,如下所示:

result = Lab4.getGroceryList().append(Lab4.getPrice(item))
于 2013-10-10T02:37:19.967 回答