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] は 2 番目の数字 (おそらく価格) になります。

気をつけて!else ステートメントは for ループ用であり、if! 用ではありません。

于 2013-04-09T13:06:15.173 に答える
0

名前がタプルの 1 つにあるかどうかを確認します。

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 に答える