У меня есть следующая Python функция:
def bet():
my_bet = -1
while my_bet < 0 or my_bet > 49:
print("before input")
my_bet = input("Enter a bet: ")
print("after input")
try:
my_bet = int(my_bet)
if my_bet < 0 or my_bet > 49:
print("Bet must be between 0 and 49")
except:
print("Need a number between 0 and 49")
continue
return my_bet
Когда я запускаю это в Windows 10, я вижу следующее поведение:
>>> bet()
before input
enter a bet: ddd
after input
need a number between 0 and 49
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in bet
TypeError: '<' not supported between instances of 'str' and 'int'
У меня также есть попытался переместить оператор if после преобразования в int в предложение else оператора try, с тем же результатом. Похоже, что преобразование запускается, вызывает исключение, затем запускается блок исключений, но вместо продолжения l oop он выполняет оставшуюся часть блока кода try. Согласно описанию Python, я не ожидал бы, что оставшаяся часть блока try будет вызвана после возникновения исключения. Что я делаю не так?