2015-07-25 2 views
-1
friends = ["Bob","Mike","Ana","Tim","Dog"] 

def is_buddy(name): 

    for friend in friends: 
     print friend 
     if friend == name: 
      return True 
     else: 
      return 

print (is_buddy('Tim')) 

В чем проблема? Почему я получаю False, если я ставлю «Тим» или кого-нибудь еще, кроме Боба?Python: Looping If Statement

+0

невозможно. Из вашего кода вы не можете получить 'False' – JuniorCompressor

+2

Вы получите' None', а не 'False', с кодом, опубликованным. –

ответ

0

Ваша проблема заключается в том, что else заявление тигров return что вызывает конец для цикла после 1'st итерации

То, что вы, вероятно, хотите сделать, это продолжать цикл. Так что просто удалить else часть из вашей функции или заменить return с чем-то вроде print "not found"

3

Try:

def is_buddy(name): 
    for friend in friends: 
     if friend == name: 
      return True 
    return False 

Проблема заключается в том, что вы проверили name против первого элемента списка, который Bob и вы решили сделать логическое решение. Вы должны были вернуть False только в конце, где вы отметили каждый элемент списка.

1

вещий способ сделать то, что вы хотите:

friends = ["Bob","Mike","Ana","Tim","Dog"] 

def is_buddy(name): 
    if name in friends: 
     return True 
    else: 
     return False 


print (is_buddy('Tim')) 
+2

Если мы пытаемся быть Pythonic, вы можете написать 'return name in friends'. – DSM