Когда я запрашиваю ввод и преобразовываю его в целое число, используя int (), а когда вы вводите целое число, это обрабатывается, как без проблем. Однако, когда пользователь вводит неправильное значение, он выдает мне две ошибки, даже если я использовал обработку исключений. Вот код:
def rand_num():
try:
print("Welcome to the random number generator!")
print()
rand_max = int(input("Enter the maximum number to randomly generate: "))
print()
print(f"Your random number is: {random.randint(0, rand_max)}")
except:
print(f"Sorry, {rand_max} is not an integer!")
А вот и ошибки:
Original exception was:
Traceback (most recent call last):
File "py_cli_calc.py", line 17, in rand_num
rand_max = int(input("Enter the maximum number to randomly generate: "))
ValueError: invalid literal for int() with base 10: 'str'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "py_cli_calc.py", line 23, in <module>
rand_num()
File "py_cli_calc.py", line 21, in rand_num
print(f"Sorry, {rand_max} is not an integer!")
UnboundLocalError: local variable 'rand_max' referenced before assignment
Я пытался поместить разные блоки кода в блок try, но я так растерялся, почему исключение не работает так, как я планировал (предполагается, что за исключением ValueError, если пользователь вводит неверный тип. Кроме того, я не понимаю, почему я получаю UnboundLocalError, потому что моя переменная rand_max не доступна для исключения? перестановка кода различными способами, например, размещение переменной, которая вызывает ошибку, за пределами попытки, но я все еще получаю UnboundLocalError! Я так запутался в этом, поэтому, пожалуйста, помогите мне!