2013-03-16 2 views
1

Всякий раз, когда я запускаю это, я получаю третий вариант, когда он должен возвращать первый, так как s = 'yes'. Что здесь происходит?Почему мое условное возвращение «нет?»

def shut_down(s): 
    if s is 'yes': 
     return 'Shutting down...' 
    elif s is 'no': 
     return 'Shutdown aborted!' 
    else: 
     return "Sorry, I didn't understand you" 

ans = 'Yes' 
s = ans.lower() 
shut_down(s) 
+1

Это повторение http://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs –

ответ

5

Изменить

if s is 'yes': 

в

if s == 'yes': 

и

elif s is 'no': 

в

elif s == 'no': 

В то время как isis a valid operator, здесь он не может использоваться (он сравнивает объект с идентификатором вместо сравнения последовательностей символов).

4

is тесты для идентификации, а не равенства. Чтобы проверить, является ли строка равнаyes использования s=='yes'

Смежные вопросы