2015-11-10 2 views
0

У меня возникла странная проблема с вводом пользователя, добавлением списка с правильной информацией и проверкой списка на правильный ввод.Python: If Statementments, Raw_Input и List Gen

По какой-то причине только входящие звонки «pally» end_instance.enter() (без «polly»).

def enter(self): 
    print """Please enter your two passwords to proceed. Check the other doors for answers. You have five guesses.""" 

    green_count = 0 

    green_ans = [] 

    while green_count < 5: 

     green_guess = (raw_input('> ')) 

     if 'polly' or 'pally' in green_guess: 
      green_ans.append(green_guess) 
      green_count += 1 

      if 'polly' and 'pally' in green_ans: 
       print "cool" 
       end_instance.enter() 
     else: 
      print "try again" 
      green_count += 1 
+2

'if 'polly' или 'pally' в green_guess:' должно быть 'if 'polly' в green_guess или 'pally' в green_guess:' Аналогично для 'and' check – karthikr

ответ

0

'polly' всегда будет правдой.

Поэтому изменить свой код на этот:

 
def enter(self): 
    print """Please enter your two passwords to proceed. Check the other doors for answers. You have five guesses.""" 

    green_count = 0 

    green_ans = [] 

    while green_count ')) 

     if 'polly' in green_guess or 'pally' in green_guess: 
      green_ans.append(green_guess) 
      green_count += 1 

      if 'polly' in green_guess and 'pally' in green_guess: 
       print "cool" 
       end_instance.enter() 
     else: 
      print "try again" 
      green_count += 1 
1

'polly' и 'pally' оба не пустые строки, и, таким образом, приравнять к True в логических контекстах в Python. Используя or и and вычисляет логическое выражение с оценкой короткого замыкания:

>>> 'polly' or 'pally' 
'polly' # first True value; second not checked 
>>> 'polly' and 'pally' 
'pally' # last True value; both checked 

Таким образом, линия:

if 'polly' and 'pally' in green_ans: 

эквивалентно говоря:

if 'pally' in green_ans: 

Таким образом, только 'pally' работает.