#python #if-statement #indentation
#python #if-statement #отступ
Вопрос:
Доброе утро,
Это мой 1-й пост здесь, и я только вытираю ноги в пуле программирования, поэтому, пожалуйста, будьте нежны 🙂
В его нынешнем виде я должен выполнить 2 условия (sadcat amp; great == да). Вместо этого я хочу сразу перейти к else (‘Зачем вы вообще начали эту игру? Кстати, это риторический вопрос.’), если 1-е условие не выполнено (sadcat == что-то еще, кроме «да») Я понятия не имею, почему это не работает… Мне кажется, что отступы в порядке. Любая помощь приветствуется
sadcat = input('Do you like war? ')
great = input ('That's great but are you also a cat? ')
if sadcat == 'yes':
if great == 'yes':
print('ok I have no more questions')
else:
print('Not a cat ? How do you even live with yourself.')
else:
print('Why did you even start this game in the first place? This is a rhetorical question btw.', end=" ")
Комментарии:
1. он работает так, как вы объяснили.
2. кажется, все работает нормально, какой ввод вы пробовали и какой результат вы ожидаете?
3. Ваш код отлично работает на моей машине, если я правильно понял ваш вопрос. Можете ли вы привести пример ввода и вывода, о котором идет речь, пожалуйста?
4. Если значение sadcat равно чему-то другому, кроме «да», я хочу, чтобы оно переходило прямо в эту строку: print(«Зачем вы вообще начали эту игру в первую очередь? Кстати, это риторический вопрос.’, end=» «) Однако он этого не делает, он переходит в «отличную» переменную, даже если я набираю что-то другое, кроме «да», на входе, я надеюсь, что я хорошо это объясняю
5. @JackLilhammers Точно! Я хочу, чтобы он не задавал 2-й вопрос, если 1-е условие не выполнено
Ответ №1:
Если вы хотите, чтобы «игра» завершилась, если «игроку» не нравится война, тогда первый if должен быть сразу после первого вопроса
sadcat = input('Do you like war? ')
if sadcat == 'no':
print('Why did you even start this game in the first place? This is a rhetorical question btw.', end=" ")
exit()
great = input ('That's great but are you also a cat? ')
if great == 'yes':
print('ok I have no more questions')
else:
print('Not a cat ? How do you even live with yourself.')
Комментарии:
1. Спасибо за вашу помощь. Поэтому в принципе я не могу поместить одно IF после другого (потому что оба условия будут интерпретироваться одно за другим), я должен разделить их в разных блоках кода. Теперь имеет смысл.
2. Конечно, вы можете! Я просто избегаю вложенных блоков, потому что это более читабельно для меня
3. Вы можете сделать так, как предложил @khelwood, и вам не нужно разделять блоки
4. Понял. Но если я делаю вложенные блоки (как я делал в исходном коде — одно IF за другим IF), тогда интерпретатор будет переходить построчно, и я не получу желаемый результат, ваш код, безусловно, легче читать 🙂
Ответ №2:
таким образом, в основном код работает с ним, выполняя каждую строку в том порядке, в котором она написана. в вашем коде сначала вводится для sadcat, затем вводится для great.
только после этого он начинает оценивать sadcat. (ваш код верен. как только он дойдет до оценивающей части, он сразу перейдет к else)
если вы хотите, чтобы игра закончилась сразу после того, как пользователь введет что-либо, кроме «да»
import sys
sadcat = input('Do you like war? ')
if sadcat != 'yes':
print('Why did you even start this game in the first place? This is a rhetorical question btw.', end=" ")
sys.exit() #this will terminate the program
great = input ('That's great but are you also a cat? ')
if sadcat == 'yes':
if great == 'yes':
print('ok I have no more questions')
else:
print('Not a cat ? How do you even live with yourself.')
Комментарии:
1. Спасибо, аналогично решению Jack Lilhammers 🙂