【发布时间】:2020-03-14 21:48:04
【问题描述】:
我有以下 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'
我还尝试将转换为 int 后的 if 语句移动到 try 语句的 else 子句中,结果完全相同。看起来转换已经运行,引发了异常,然后运行了 except 块,但是它没有继续循环,而是执行了“try”代码块的其余部分。根据 Python 描述,在引发异常后,我不希望 try 块的其余部分。我做错了什么?
【问题讨论】:
-
它没有运行其余的
try代码,它会回到 while 循环的顶部。 -
可以看到它引用了
bet()函数的第3行。 -
啊,是的,确实。我的错。谢谢。
-
不客气。
标签: while-loop window try-except python-3.8