Top.Mail.Ru
Ответы

Не могу понять где не работает код python

Вот код:

print('Привет! Вообщем, хочешь пройти викторину с вопросами про Новый Год?')
a = input()
while a == ('да') or ('Да') or ('Хорошо') or ('хорошо'):
print('хорошо, вот первый вопрос. Год в котором появился Санта Клаус?')
a = input()
break
else:
print('ну как хочешь')
quit()
while a == ('1931'):
print('хорош, ну тогда скажи, где живёт Дед Мороз?')
a = input()
break
else:
print('не, не а')
quit()
while a == ('в Великом Устюге') or ('Великий Устюг') or ('великий устюг'):
print('Правильно, следуйщий вопрос, когда И.В.Сталин вернул празнование нового года?')
a = input()
break
else:
print('Прости, но нет.')
exit()
while a == ('1 января 1936') or ('1936') or ('1936 год'):
print('Да верно, следующий вопрос, в честь какого римского бога был назван январь?')
a = input()
break
else:
print('Прости, но нет')
quit()
while a == ('Янус') or ('янус') or ('Бог дверей "Янус"'):
print('Да верно, следующий вопрос, какая страна первая празднует новый год?')
print('Кирибати')
print('Новая Зеландия')
print('Австралия')
a = input()
break
else:
print('Прости, но нет')
quit()
while a == ('Кирибати') or ('кирибати'):
print('Да верно, следующий вопрос, по какому календарю наступает 1 января?')
a = input()
break
else:
print('Сорян, но это не так')
quit()
while a == ('По григорианскому календарю') or ('григорианский календарь') or ('по григорианскому') or ('по Григорианскому') :
print('да хорошо. Чтож у меня вопросы кончились так что ты докозал что ты готов к новому году.')
quit()
else:
print('не, не правильно')
quit()

Проблема в том, что когда вводишь не правильный ответ, то программа его считает правильный, пожалуйста помогите

По дате
По рейтингу
Аватар пользователя
Новичок
6мес

Ваша проблема заключается в том, как вы используете условие в циклах `while`. Вы пишете, например, `while a == ('да') or ('Да')`, что всегда будет истинным, поскольку `'Да'` — это непустая строка, и Python всегда будет воспринимать её как истинное значение. Вместо этого вам нужно использовать полное условие для каждой проверки.

Вот исправленный пример кода:

```python
print('Привет! Вообщем, хочешь пройти викторину с вопросами про Новый Год?')
a = input()
if a in ['да', 'Да', 'Хорошо', 'хорошо']:
print('хорошо, вот первый вопрос. Год в котором появился Санта Клаус?')
a = input()
if a == '1931':
print('хорош, ну тогда скажи, где живёт Дед Мороз?')
a = input()
if a in ['в Великом Устюге', 'Великий Устюг', 'великий устюг']:
print('Правильно, следуйщий вопрос, когда И.В.Сталин вернул празнование нового года?')
a = input()
if a in ['1 января 1936', '1936', '1936 год']:
print('Да верно, следующий вопрос, в честь какого римского бога был назван январь?')
a = input()
if a in ['Янус', 'янус', 'Бог дверей "Янус"']:
print('Да верно, следующий вопрос, какая страна первая празднует новый год?')
print('Кирибати')
print('Новая Зеландия')
print('Австралия')
a = input()
if a in ['Кирибати', 'кирибати']:
print('Да верно, следующий вопрос, по какому календарю наступает 1 января?')
a = input()
if a in ['По григорианскому календарю', 'григорианский календарь', 'по григорианскому', 'по Григорианскому']:
print('да хорошо. Чтож у меня вопросы кончились так что ты доказал что ты готов к новому году.')
else:
print('не, не правильно')
else:
print('Прости, но нет')
else:
print('Прости, но нет.')
else:
print('не, не а')
else:
print('не, не а')
else:
print('ну как хочешь')
else:
print('ну как хочешь')
```

В этом исправленном коде используются вложенные `if` вместо `while`, что более логично для вашей задачи. Теперь программа проверяет каждую ответ отдельно и корректно обрабатывает неправильный ответ.

Аватар пользователя
Просветленный
6мес
12345678910111213141516171819202122232425
 print('Привет! Вообщем, хочешь пройти викторину с вопросами про Новый Год?') 
a=input() 
if a.lower() not in('да','хорошо'):print('ну как хочешь');quit() 
print('хорошо, вот первый вопрос. Год в котором появился Санта Клаус?') 
a=input() 
if a!='1931':print('не, не а');quit() 
print('хорош, ну тогда скажи, где живёт Дед Мороз?') 
a=input() 
if a.lower() not in('в великом устюге','великий устюг'):print('Прости, но нет.');quit() 
print('Правильно, следуйщий вопрос, когда И.В.Сталин вернул празнование нового года?') 
a=input() 
if a.lower() not in('1 января 1936','1936','1936 год'):print('Прости, но нет.');quit() 
print('Да верно, следующий вопрос, в честь какого римского бога был назван январь?') 
a=input() 
if a.lower() not in('янус','бог дверей "янус"'):print('Прости, но нет');quit() 
print('Да верно, следующий вопрос, какая страна первая празднует новый год?') 
print('Кирибати') 
print('Новая Зеландия') 
print('Австралия') 
a=input() 
if a.lower()!='кирибати':print('Прости, но нет');quit() 
print('Да верно, следующий вопрос, по какому календарю наступает 1 января?') 
a=input() 
if a.lower() not in('по григорианскому календарю','григорианский календарь','по григорианскому'):print('не, не правильно');quit() 
print('да хорошо. Чтож у меня вопросы кончились так что ты докозал что ты готов к новому году.')