我在使用 try-except 块验证输入时遇到错误
I am getting errors from using try-except block to validate input
我想使用 try-except 代码块来通知用户不要插入 float 类型的值,而是 整数。下面的代码不会引发错误,而是会关闭。
我猜它们是 try-except 块上的逻辑错误。
userGuess = int(userGuess)
import random
MAX_GUESSES = 5 # max number of guesses allowed
MAX_RANGE = 20 # highest possible number
# show introductionpygame
print("welcome to my franchise guess number game")
print("guess any number between 1 and", MAX_RANGE)
print("you will have a range from", MAX_GUESSES, "guesses")
def playOneRound():
# choose random target
target = random.randrange(1, MAX_RANGE + 1)
# guess counter
guessCounter = 0
# loop fovever
while True:
userGuess = input("take a guess:")
#check for potential errors
try:
userGuess = int(userGuess)
except:
print("sorry, you are only allowed to enter integers thanks!")
# increment guess counter
guessCounter = guessCounter + 1
# if user's guess is correct, congratulate user, we're done
if userGuess == target:
print("you got it la")
print("it only took you", guessCounter, "guess(es)")
break
elif userGuess < target:
print("try again, your guess is too low.")
else:
print(" your guess was too high")
# if reached max guesses, tell answer correct answer, were done
if guessCounter == MAX_GUESSES:
print(" you didnt get it in ", MAX_GUESSES, "guesses")
print("the number was", target)
break
print("Thanks for playing ")
# main code
while True:
playOneRound() # call a function to play one round of the game
goAgain = input("play again?(press ENTER to continue, or q to quit ):")
if goAgain == "q":
break
任务可以分为两个步骤:
- 检查输入的字符串是否可以转换为数字
- 检查此数字是否为整数
while True:
userGuess = input("take a guess: ")
try:
userGuess = float(userGuess) # stuff like "asdf", "33ff" will raise a ValueError
if userGuess.is_integer(): # this is False for 34.2
userGuess = int(userGuess)
break # an integer is found, leave the while loop
except ValueError:
pass # just try again
print("sorry, you are only allowed to enter integers thanks!")
我想使用 try-except 代码块来通知用户不要插入 float 类型的值,而是 整数。下面的代码不会引发错误,而是会关闭。 我猜它们是 try-except 块上的逻辑错误。
userGuess = int(userGuess)
import random
MAX_GUESSES = 5 # max number of guesses allowed
MAX_RANGE = 20 # highest possible number
# show introductionpygame
print("welcome to my franchise guess number game")
print("guess any number between 1 and", MAX_RANGE)
print("you will have a range from", MAX_GUESSES, "guesses")
def playOneRound():
# choose random target
target = random.randrange(1, MAX_RANGE + 1)
# guess counter
guessCounter = 0
# loop fovever
while True:
userGuess = input("take a guess:")
#check for potential errors
try:
userGuess = int(userGuess)
except:
print("sorry, you are only allowed to enter integers thanks!")
# increment guess counter
guessCounter = guessCounter + 1
# if user's guess is correct, congratulate user, we're done
if userGuess == target:
print("you got it la")
print("it only took you", guessCounter, "guess(es)")
break
elif userGuess < target:
print("try again, your guess is too low.")
else:
print(" your guess was too high")
# if reached max guesses, tell answer correct answer, were done
if guessCounter == MAX_GUESSES:
print(" you didnt get it in ", MAX_GUESSES, "guesses")
print("the number was", target)
break
print("Thanks for playing ")
# main code
while True:
playOneRound() # call a function to play one round of the game
goAgain = input("play again?(press ENTER to continue, or q to quit ):")
if goAgain == "q":
break
任务可以分为两个步骤:
- 检查输入的字符串是否可以转换为数字
- 检查此数字是否为整数
while True:
userGuess = input("take a guess: ")
try:
userGuess = float(userGuess) # stuff like "asdf", "33ff" will raise a ValueError
if userGuess.is_integer(): # this is False for 34.2
userGuess = int(userGuess)
break # an integer is found, leave the while loop
except ValueError:
pass # just try again
print("sorry, you are only allowed to enter integers thanks!")