如何解决我该如何在随机猜数字游戏中正确使用isinstance或需要其他功能?
我希望这个猜数字游戏能够捕获用户输入的所有可能的异常或错误。我已经成功地阻止了在猜测数字时使用字符串的方法,但是我希望控制台在输入浮点数时显示一条自定义消息,并说“仅允许1-20之间的整数”。我意识到我的异常可以捕获这种错误,但是出于学习目的,我想专门处理用户输入的是float而不是int。从网上可以找到的isinstance()函数似乎正是我想要的。我尝试以一种似乎合乎逻辑的方式应用它,但是当我尝试运行代码并在猜测随机数时输入浮点数时,它只是恢复为我的广义异常。我是Python的新手,所以如果有人愿意帮助我,我也将感谢对我的代码的任何批评。我尝试在没有互联网帮助的情况下进行此操作。尽管它在大多数情况下都有效,但我无法克服自己效率低下的感觉。我是自学成才,如果这有助于我的情况大声笑。这是我的源代码,谢谢:
import random
import sys
def getRandNum():
num = random.randint(1,20)
return num
def getGuess(stored_num,name,gameOn = True):
while True:
try:
user_answer = int(input("Hello " + name + " I'm thinking of a number between 1-20. Can you guess what number I'm thinking of"))
while gameOn:
if user_answer >= 21 or user_answer <=0:
print("That is not a number between 1-20. Try again.")
user_answer = int(input())
elif isinstance(user_answer,int) != True:
print("Only enter whole numbers. No decimals u cheater!")
user_answer = int(input())
elif user_answer > stored_num:
print("That guess is too high. Try again " + name + " !")
user_answer = int(input())
elif user_answer < stored_num:
print("That guess is too low. Try again " + name + " !")
user_answer = int(input())
elif user_answer == stored_num:
print("You are correct! You win " + name + " !")
break
except ValueError:
print("That was not a number,try again")
def startGame():
print("Whats Your name partner?")
name = input()
stored_num = getRandNum()
getGuess(stored_num,name)
def startProgram():
startGame()
startProgram()
while True:
answer = input("Would you like to play again? Type Y to continue.")
if answer.lower() == "y":
startProgram()
else:
break
quit()
解决方法
try
语句中唯一需要的是检查输入是否可以转换为int
的代码。您可以从一个函数开始,该函数的 only 任务是提示用户输入数字,直到int(response)
确实成功执行为止。
def get_guess():
while True:
response = input("> ")
try:
return int(response)
except ValueError:
print("That was not a number,try again")
一旦您拥有有效的int
,然后,您可以执行范围检查以查看其是否超出范围,过低,过高或相等。
# The former getGuess
def play_game(stored_num,name):
print(f"Hello {name},I'm thinking of a number between 1-20.")
print("Can you guess what number I'm thinking of?")
while True:
user_answer = get_guess()
if user_answer >= 21 or user_answer <=0:
print("That is not a number between 1-20. Try again.")
elif user_answer > stored_num:
print(f"That guess is too high. Try again {name}!")
elif user_answer < stored_num:
print(f"That guess is too low. Try again {name}!")
else: # Equality is the only possibility left
print("You are correct! You win {name}!")
break
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。