2013-04-09 41 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)