Выполнял упражнение из учебника 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)
Вот почему выходит ошибка. Также я немного подправил Ваш код.