Выполнял упражнение из учебника Python. Как написать альтернативу программы, чтобы следующие пункты использовались хоть 1 раз?

prompt = "Скольки вам лет?"
prompt += "Введите 'quit' чтобы завршить цикл"

message = " "
active = True

while message != 'quit' and active:
    message = input(prompt) 
    if message < 3:
        print('Ваш билет бесплатный')
    elif message > 12:
        print('Ваш билет стоит 15$')
    elif message <= 12:
        print('Ваш билет стоит 10$ ')
    else:
        active = False

Три выхода: напишите альтернативную версию упражнения 7.4 или упражнения 7.5, в которой каждый пункт следующего списка встречается хотя бы один раз:

  • Завершение цикла по проверке условия в команде while.
  • Управление продолжительностью выполнения цикла в зависимости от переменной active.
  • Выход из цикла по команде break, если пользователь вводит значение 'quit'

Меня интересует конкретно 2 пункт (• Управление продолжительностью выполнения цикла в зависимости от переменной active.) При вызове 'quit' выходит ошибка. Помогите пожалуйста.введите сюда описание изображения


Ответы (2 шт):

Автор решения: Ivan Main
prompt = "Скольки вам лет?\n"
prompt += "Введите 'quit' чтобы завершить цикл: "

message = " "
active = 3


while message != 'quit' and active:
    message = input(prompt)
    if message.isdigit():
        message = int(message)
        if message < 3:
            print('Ваш билет бесплатный')
            break
        elif message > 12:
            print('Ваш билет стоит 15$')
            break
        elif message <= 12:
            print('Ваш билет стоит 10$ ')
            break
    elif message == 'quit':
        break
    else:
        active -= 1
        print(f'Ошибка ввода, у вас еще попыток: {active}')
→ Ссылка
Автор решения: Пушистик
# переменная с приглашением
prompt = 'Сколько Вам лет? Введите \'quit\', чтобы завершить цикл '

# переменные 'message' и 'active'
message = ''
active = True

# пока 'message' не 'quit' и 'active' == True
while message != 'quit' and active:
    # ввод
    message = input(prompt)
    # если 'message' это число
    if message.isdigit():
        # превращаем 'message' в <int>
        message = int(message)
        if message < 3:
            print('Ваш билет бесплатный')
        elif message >= 3 and message <= 12:
            print('Ваш билет стоит 10$')
        elif message > 12:
            print('Ваш билет стоит 15$')
    elif message == 'quit':
        active = False
        # команда break для выхода из цикла
        break
    # если не ввел число или 'quit'
    else:
        # продолжаем выполнение цикла
        continue

Нельзя сравнивать два разных типа данных - у Вас это str - строка и int - целое число. Перед сравнением str с int нужно преобразовать str в int:

message = int(message)

Вот почему выходит ошибка. Также я немного подправил Ваш код.

→ Ссылка