Задача из книги "Начинаем программировать на Пайтон" Том Гэддис
После ответа "Да" код выдает "отлично", но перед этим выдает предыдущие условие. Как это исправить ? Да и вообще хотелось бы увидеть другие варианты решения этой задачи
a = input("Исправили проблему? ")
a1 = "Перезагрузите компьютер и попробуйте подключиться"
a2 = "Перезагрузите маршрутизатор и попробуйте еще раз"
a3 = "Убедитесь, что кабели в исправны"
a4 = "Переместите маршрутизатор на новое место."
a5 = "Замените роутер, скорее всего он неисправен."
a6 = "Отлично"
sps = ["нет"]
if a in sps:
print()
print(a1)
print()
if a in sps:
a = input("Исправили проблему? ")
print()
print(a2)
print()
if a in sps:
a = input("Исправили проблему? ")
print()
print(a3)
print()
if a in sps:
a = input("Исправили проблему? ")
print()
print(a4)
print()
if a in sps:
a = input("Исправили проблему? ")
print()
print(a5)
else:
if a == "да":
print(a6)
Ответы (3 шт):
Автор решения: passant
→ Ссылка
После ответа "Да" код выдает "отлично", но перед этим выдает предыдущие условие. - ну, во-первых, не предыдущее, а последующее, и не условие, а указание. Хоть посмотрите внимательно, что делает ваше программа до того, как вопросы задавать. Во-вторых, ваша задача решается вот так:
arr0=["Перезагрузите компьютер и попробуйте подключиться",
"Перезагрузите маршрутизатор и попробуйте еще раз",
"Убедитесь, что кабели в исправны",
"Переместите маршрутизатор на новое место.",
"Замените роутер, скорее всего он неисправен."]
for i,qu in enumerate(arr0):
a = input("Исправили проблему? ")
if a=='да':
print ('Отлично')
break
else:
print(arr0[i])
По просьбе ТС и по замечанию уважаемого Stanislav Volodarskiy тот-же код без enumerate:
for qu in arr0:
a = input("Исправили проблему? ")
if a=='да':
print ('Отлично')
break
else:
print(qu)
Автор решения: Vladimir Bogdanov
→ Ссылка
Как вариант.
recomendations = [
"Перезагрузите компьютер и попробуйте подключиться",
"Перезагрузите маршрутизатор и попробуйте еще раз",
"Убедитесь, что кабели в исправны",
"Переместите маршрутизатор на новое место.",
"Замените роутер, скорее всего он неисправен.",
]
i = 0
while i < len(recomendations):
print(recomendations[i])
match input("Исправили проблему? "):
case 'n'|'no'|'нет':
i += 1
case 'y'|'yes'|'да':
print('Отлично')
break
case _:
print('Дайте ответ: да(y,yes) или нет(n,no)')
else:
print('Жаль, что не смогли помочь.')
Автор решения: user603239
→ Ссылка
Предлагаю свой вариант решения задачки (по-проще):
request_user = input('Перезагрузите компьютер и попробуйте подключиться. Вы исправили проблему?')
if request_user == 'нет':
request_user = input('Перезагрузите маршрутизатор и попробуйте подключиться. Вы исправили проблему?')
if request_user == 'нет':
request_user = input('Убедитесь, что кабели между маршрутизатором и модемом прочно подсоединены. '
'Вы исправили проблему?')
if request_user == 'нет':
request_user = input('Переместите маршрутизатор на новое место. Вы исправили проблему?')
if request_user == 'нет':
print(' Возьмите новый маршрутизатор')
elif request_user == 'да':
print(' Всего хорошего')
elif request_user == 'да':
print(' Всего хорошего')
elif request_user == 'да':
print(' Всего хорошего')

