try-except
. В блоке try
попытаться преобразовать ввод в число (например, с помощью int()
или float()
). Если возникнет исключение ValueError
(или другое подходящее), в блоке except
обработать ошибку (например, вывести сообщение об ошибке и попросить пользователя ввести число снова).
Чтобы избежать ошибки, если пользователь вводит не число, можно использовать несколько подходов:
try:
user_input = input("Введите число: ")
number = int(user_input) # Или float(user_input) для дробных чисел
# Дальнейшая обработка числа...
print("Вы ввели число:", number)
except ValueError:
print("Ошибка: Введенное значение не является числом.")
except Exception as e: # Опционально, перехват всех остальных исключений
print(f"Произошла неожиданная ошибка: {e}")
user_input = input("Введите число: ")
if user_input.isdigit(): # Для целых положительных чисел
number = int(user_input)
print("Вы ввели число:", number)
elif user_input.replace('.', '', 1).isdigit(): # Для чисел с плавающей точкой (положительных)
try:
number = float(user_input)
print("Вы ввели число с плавающей точкой:", number)
except ValueError:
print("Ошибка преобразования в float.")
elif user_input.startswith('-') and user_input[1:].isdigit(): #Для отрицательных целых чисел
number = int(user_input)
print("Вы ввели отрицательное целое число:", number)
else:
print("Введенное значение не является числом.")
import re
user_input = input("Введите число: ")
pattern = r"^-?\d+(\.\d+)?$" # Соответствует целым и дробным числам (с минусом или без)
if re.match(pattern, user_input):
try:
number = float(user_input)
print("Вы ввели число:", number)
except ValueError: # на всякий случай
print("Ошибка преобразования в float.")
else:
print("Введенное значение не является числом.")
Какой метод выбрать?
Метод `try-except` обычно является предпочтительным, так как он наиболее читаемый и соответствует принципам Python (EAFP - Easier to ask for forgiveness than permission). Строковые методы могут быть полезны для простой проверки, но становятся сложнее, когда требуется обработка различных форматов чисел. Регулярные выражения подходят для более сложных случаев, когда нужно проверять ввод на соответствие определенному формату.
Важно также учитывать контекст, в котором происходит ввод данных. Если требуется повторный ввод, можно организовать цикл, который будет запрашивать ввод до тех пор, пока не будет введено корректное число.
while True:
try:
user_input = input("Введите число: ")
number = int(user_input)
break # Выходим из цикла, если ввод корректен
except ValueError:
print("Некорректный ввод. Пожалуйста, введите число.")
print("Вы ввели число:", number)