2013-04-09 43 views
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: ('200', '3.20')。我也期待摆脱周围的元组支架和我不知道怎么样,把str()围绕它并没有解决这个问题。

+0

您还没有包括函数调用。你用什么参数来调用函数? – 2013-04-09 13:05:57

+0

“即使苹果饼是名有问题的函数返回苹果派:(‘200’,‘3.20’)” 你的意思是“即使苹果饼是有问题的名称,函数返回甜甜圈:.... )“? – Xyzk 2013-04-09 13:07:11

回答

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!

+0

非常感谢您!当我读了你的代码我的失误打我就像一个卡车哈哈。 – Xivion 2013-04-09 13:19:12

+0

欢迎您。 – 2013-04-09 13:20:07

0

看到,如果一个名称是在元组中的一个:

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

打印在better format元组:

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)