Поймать ValueError
здесь не очень ценно, так как int(1.222)
действителен и int('99')
также действителен.
A ValueError
повышается , когда вы пытаетесь int('1.999')
, но для меня это сначала строка, а вторая строка / число с плавающей запятой.
Возможно, вы могли бы ввести цикл while
, который ожидает допустимого пользовательского ввода, и проверить пользовательский ввод с помощью isinstance(...)
.
Пример:
n1 = None
while(n1 is None):
user_input = input('Number: ')
if isinstance(user_input, str):
print ('STRING ERROR!')
continue # restart the loop
if isinstance(user_input, float):
print ('FLOAT ERROR!')
continue # restart the loop
try:
n1 = int(user_input)
except ValueError as e:
# Something crazy happened
print(e.message)
continue # restart the loop
# Do the rest of the program
InКроме того, этот цикл while
может обрабатывать несколько неудачных входов, тогда как
try:
n1=int(input("number: "))
except ValueError:
print('ERROR!! Inserted a value of type String or Char')
print('ERROR!! Inserted a value of type float')
n1=int(input("number: "))
завершится сбоем, если вы введете «1,999» дважды.