Python新手猜数字游戏优化及非整数输入报错问题求助
优化你的Python猜数字游戏:输入校验+代码精简
嘿,你的猜数字游戏基础逻辑很完整!我来帮你解决输入校验的问题,同时把代码优化得更简洁规范~
一、搞定非整数输入的报错问题
当用户输入字母、符号这类非整数内容时,int(input())会直接抛出ValueError崩溃。咱们可以用try-except异常捕获来处理这种情况,配合循环让用户重新输入,直到拿到合法的整数。另外把“获取合法猜测”的逻辑封装成小函数,能让主代码更清爽。
二、代码优化的几个小细节
- 用f-string替代老式字符串拼接,写法更简洁、可读性更强
- 简化循环嵌套,减少不必要的条件判断
- 变量名更语义化(比如把
guess_name改成player_name,一眼就能看懂含义) - 把重复的提示信息整合,减少代码冗余
优化后的完整代码
from random import randint def get_valid_guess(): """获取用户的合法猜测(1-10之间的整数)""" while True: try: guess = int(input("Take a guess! ")) if 1 <= guess <= 10: return guess else: print("Oops! That's not an option! Please enter a number between 1 and 10.") except ValueError: print("Invalid input! Please enter an integer.") # 主游戏逻辑 random_number = randint(1, 10) max_guesses = 4 guesses_taken = 0 player_name = input("Hello! What is your name? ") print(f"Well, {player_name}, I am thinking of a number between 1-10. You have {max_guesses} chances.") while guesses_taken < max_guesses: guess = get_valid_guess() guesses_taken += 1 if guess == random_number: print(f"You're right! Congratulations, {player_name}! You got it in {guesses_taken} guesses!") break elif guesses_taken < max_guesses: print("Nope! Try again.") else: print(f"Out of chances. You lose. The number was {random_number}.")
关键优化点说明
get_valid_guess()函数:专门负责输入校验,循环直到用户输入1-10之间的整数,遇到非整数输入会友好提示并重新要求输入。- 避免无效输入消耗次数:原来的代码里输入非法数字也会增加猜测次数,现在只有拿到合法输入才计数,逻辑更合理。
- 增强游戏体验:游戏结束时告诉用户正确数字,获胜时显示用了几次猜测,交互感更好。
内容的提问来源于stack exchange,提问作者Timothy David
相关产品推荐
相关产品推荐

