2016-06-03 4 views
-4
input1 = raw_input("").lower() 
if input1 == "no": 
    print "no" 
if input1 == "yes": 
    print "yes" 
else: 
    print "nothing" 

Это упрощенная версия проблемы, с которой я сталкиваюсь, я знаю, почему это происходит, но не знаю, как ее исправить или что искать. Каждый раз, когда выполняется что-либо, кроме последнего, если выполняется, он всегда печатает else вместе с ним.Оператор Python If/Else работает не так, как ожидалось

Пример: Если я помещу «нет» в это, он печатает «нет» и «ничего», но если «да» введен, он печатает только «да».

+3

Используйте 'elif'. Просто зачитай свои условия. – miradulo

ответ

3

У вас есть два отдельных заявления if. Таким образом, код будет проверять, равен ли вход 1 равным «нет», а затем проверяет, равно ли он «да» каждый раз. Если вы измените его следующим образом:

input1 = raw_input("").lower() 
    if input1 == "no": 
    print "no" 
    elif input1 == "yes": 
    print "yes" 
    else: 
    print "nothing" 

Тогда это будет один оператор, который будет первым проверить «нет», если это ложь, он будет проверять на «да», и, наконец, если это ложь, он будет печатать «ничего».

0

У вас есть два условия if. Второй должен быть elif. Измените ваш

if input1 == "yes": 

в

elif input1 == "yes": 
1

У вас есть один if, отделенный от if/else; первый тест может пройти, и второй тест все еще выполняется (при выполнении условия else, если он не работает). Измените тест на:

if input1 == "no": 
    print "no" 
elif input1 == "yes": # <-- Changed if to elif so if input1 == "no" we don't get here 
    print "yes" 
else: 
    print "nothing" 

на английском описание исходного кода «Если input1 равно„нет“, то печать„нет“Если input1 равно„да“, печать„да“, но если это не так. равный «да», напечатайте «ничего». Обратите внимание, как два предложения отключены; независимо от того, печатаете ли вы nothing, не зависит от теста для no.

Побочное Примечание: Вы можете упростить этот код немного:

if input1 in ("no", "yes"): 
    print input1 
else: 
    print "nothing" 

, который избегает проблемы полностью (конечно, ваш реальный код, скорее всего, более сложной, так что вы не можете использовать этот трюк).

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