Задача из книги "Начинаем программировать на Пайтон" Том Гэддис

Рейтинг: 1Ответов: 3Опубликовано: 16.04.2023

После ответа "Да" код выдает "отлично", но перед этим выдает предыдущие условие. Как это исправить ? Да и вообще хотелось бы увидеть другие варианты решения этой задачи

введите сюда описание изображения

введите сюда описание изображения

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)

Ответы

▲ 2Принят

После ответа "Да" код выдает "отлично", но перед этим выдает предыдущие условие. - ну, во-первых, не предыдущее, а последующее, и не условие, а указание. Хоть посмотрите внимательно, что делает ваше программа до того, как вопросы задавать. Во-вторых, ваша задача решается вот так:

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)
▲ 0

Как вариант.

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('Жаль, что не смогли помочь.')
▲ 0

Предлагаю свой вариант решения задачки (по-проще):

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(' Всего хорошего')