问题描述
每次我尝试编写代码时它都可以工作,但是当我输入 'stop' 时,它会给我一个错误:
Every time I try me code it works but when I type in 'stop' it gives me an error:
ValueError: int() 以 10 为底的无效文字:'stop'
ValueError: invalid literal for int() with base 10: 'stop'
def guessingGame(): global randomNum guessTry = 3 while True: guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop: ') if int(guess) == randomNum: print('Correct') break if int(guess) < randomNum: print('Too Low') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if int(guess) > randomNum: print('Too High') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if guessTry == 0: print('You have no more tries') return if str(guess) == 'stop' or str(guess) == 'Stop': break
推荐答案
传递给 int() 的字符串应该只包含数字:
The string passed to int() should only contain digits:
>>> int("stop") Traceback (most recent call last): File "<ipython-input-114-e5503af2dc1c>", line 1, in <module> int("stop") ValueError: invalid literal for int() with base 10: 'stop'
快速解决方法是在此处使用 异常处理:
A quick fix will be to use exception handling here:
def guessingGame(): global randomNum global userScore guessTry = 3 while True: guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop: ') try: if int(guess) == randomNum: print('Correct') break if int(guess) < randomNum: print('Too Low') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if int(guess) > randomNum: print('Too High') guessTry = guessTry - 1 print('You have, ' + str(guessTry) + ' Guesses Left') if guessTry == 0: print('You have no more tries') return except ValueError: #no need of str() here if guess.lower() == 'stop': break guessingGame()
您可以使用 guess.lower() == 'stop' 来匹配stop"的任何大小写组合:
And you can use guess.lower() == 'stop' to match any uppercase-lowercase combination of "stop":
>>> "Stop".lower() == "stop" True >>> "SToP".lower() == "stop" True >>> "sTOp".lower() == "stop" True