0

我遇到了另一个问题,虽然元组内的字符串已经找到;只返回第一个信息元组。

def info(name, food_list):
    food_list = = [('Donut', '320', '4.00'), ('Apple Pie', '200', '3.20')]
    innertup = food_list[0]
    for c in food_list:
        if name in c:
            print name,':',innertup[1:3]
            return None
        else:
            print "Unknown food", name
            return None

当它运行时它只会打印出来Donut: ('320', '4.00'),即使 Apple Pie 是该函数返回的名称Apple Pie: ('200', '3.20')。我还希望摆脱元组周围的括号,但我不知道如何,把str()它放在一边并不能解决问题。

4

2 回答 2

1

这应该有效:

def info(name, food_list):
    food_list = = [('Donut', '320', '4.00'), ('Apple Pie', '200', '3.20')]
    for c in food_list:
        if name in c:
            print c[0],':',c[1], ' ', c[2]
            return None
    else:
        print "Unknown food", name
        return None

c[0] 将是食物的名称,c[1] 是第一个数字(可能是数量),c[2] 是第二个数字(可能是价格)。

小心点!else 语句用于 for 循环,而不用于 if!

于 2013-04-09T13:06:15.173 回答
0

查看名称是否在其中一个元组中:

for x in food_list:
    if 'Apple Pie' in x:
        print (x)

以更好的格式打印元组:

print "{0[0]}: {0[1]} : {0[2]}".format(x)

您可以更改对周围的格式{}以匹配您想要的。

所以总的来说:

def info(name, food_list):
    for x in food_list:
        if name in x:
            print "{0[0]}: {0[1]} : {0[2]}".format(x)
于 2013-04-09T13:07:33.400 回答