You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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}.")

关键优化点说明

  1. get_valid_guess()函数:专门负责输入校验,循环直到用户输入1-10之间的整数,遇到非整数输入会友好提示并重新要求输入。
  2. 避免无效输入消耗次数:原来的代码里输入非法数字也会增加猜测次数,现在只有拿到合法输入才计数,逻辑更合理。
  3. 增强游戏体验:游戏结束时告诉用户正确数字,获胜时显示用了几次猜测,交互感更好。

内容的提问来源于stack exchange,提问作者Timothy David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:58:51