当用户的输入为< = 0且输入=“停止”时,我希望代码“中断”。 这是我到目前为止所做的。
while True:
try:
x = input("how many times do you want to flip the coin?: ")
if int(x) <= 0 or x.lower() == "stop":
break
x = int(x)
coinFlip(x)
except ValueError:
print ()
print ("Please read the instructions carefully and try one more time! :)")
print ()
我收到错误:
if int(x) <= 0 or str(x).lower() == "stop":
ValueError: invalid literal for int() with base 10: 'stop'
答案 0 :(得分:2)
你得到了例外,因为第一个被评估的条件是int(x) <= 0
而x此时并不是真正的整数。
您可以更改条件的顺序:
if x.lower() == 'stop' or int(x) <=0
这样您首先检查'stop'
,并且不评估int(x)
(因为or
条件已经评估为True
)。任何不是整数且不是'stop'
的字符串都会导致您已经处理的ValueError
例外。
答案 1 :(得分:1)
您得到ValueError
,因为您无法将字符串'stop'
转换为整数。
解决此问题的一种方法是使用正确捕获ValueError
的辅助方法,然后检查字符串是否为stop
:
def should_stop(value):
try:
return int(value) <= 0
except ValueError:
return value.lower() == "stop"
while True:
x = input("how many times do you want to flip the coin?: ")
if should_stop(x):
break