2013-04-09 3 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 это имя в вопросе функция возвращает Apple Pie: ('200', '3.20'). Я также хочу избавиться от скобок, связанных с кортежем, и я не уверен, как, ставя str() вокруг него, не решает проблему.

+0

Вы не включая вызов функции. С какими аргументами вы пользуетесь функцией вызова? –

+0

«Даже если Apple Pie является названным именем, функция возвращает Apple Pie: (« 200 »,« 3.20 »)« Возможно, вы имели в виду «даже когда Apple Pie - это имя, которое функция возвращает Donut: ....) "? – Xyzk

ответ

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 

с [0] будет название пищи, с [1] первое число (возможно, количество) и в [2] второе число (возможно, цена).

Будьте осторожны! Задание else для цикла for, а не для if!

+0

Большое спасибо! Как только я прочитал ваш код, моя ошибка поразила меня, как грузовик ха-ха. – Xivion

+0

Добро пожаловать. –

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) 
Смежные вопросы