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

关于Python猜数字游戏中random.randint生成时机的技术问询

问题解答

关于随机数是否重新生成的疑问

你的代码里,random.randint(1,11)写在while play == "play"循环的内部开头位置,每轮游戏只会生成一次随机数,玩家猜错后不会重新生成新数字——因为生成随机数的语句不在后续的猜测循环里,只会在每轮游戏启动时执行一次。

不过当前代码存在逻辑缺陷:

  • 第一次猜对后直接结束本轮,没有处理后续流程;
  • 后续的for循环仅让用户输入,未判断是否猜对,就算猜对也会继续要求输入;
  • 没有处理5次全猜错的情况;
  • 输入判断严格限制为小写"play",用户输入大写或混合大小写无法启动游戏。

修正后的代码(满足需求)

import random

while True:
    play = input("Type 'Play' to play: ").strip().lower()
    if play != "play":
        print("退出游戏")
        break
    
    # 每轮游戏仅生成1个1-10的随机数
    number = random.randint(1, 10)
    print("猜数字:电脑已选出1-10之间的一个数,你有5次机会")
    
    # 5次猜测机会循环
    for tries_left in range(5, 0, -1):
        try:
            num_guess = int(input(f"请输入猜测的数字(剩余{tries_left}次机会):"))
        except ValueError:
            print("请输入有效的整数!")
            continue
        
        if num_guess == number:
            print(f"恭喜你猜对了!数字就是{number}")
            break
        elif num_guess < number:
            print("猜小了,再试试")
        else:
            print("猜大了,再试试")
    else:
        # 循环正常结束(5次都没猜对)
        print(f"很遗憾,5次机会用完了,正确数字是{number}")

代码说明

  • 用while True实现循环启动游戏,输入'play'即可重启,输入其他内容退出;
  • 每轮游戏开始时生成唯一随机数,直到本轮游戏结束;
  • 处理了输入非整数的异常情况,避免程序崩溃;
  • 每次猜测后给出明确提示(猜大/猜小),优化游戏体验;
  • 5次全猜错后会主动显示正确数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:35:33