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

如何将用户输入设为Python猜数字游戏中随机变量的取值上限

猜数字游戏自定义随机上限实现方案

你现有代码的核心问题是:cc = [1, num]仅包含1和输入的上限两个数值,调用random.choice()只能从这两个数里二选一,无法覆盖1到上限之间的所有整数,不符合需求。


具体修改方法

你可以任选以下两种方案实现需求:

  • 方案1:直接生成指定范围内的随机整数,无需手动创建列表
    把cc = [1, num]和computerchoice = random.choice(cc)两行替换为:
    computerchoice = random.randint(1, num)
    
    random.randint(a, b)会返回大于等于a、小于等于b的整数,刚好匹配1到自定义上限的取值要求。
  • 方案2:如果需要先生成全量范围列表再选取,就修改列表生成逻辑
    把cc = [1, num]改为:
    cc = list(range(1, num + 1))
    
    因为Python的range是左闭右开区间,写range(1, num+1)才能把上限num包含进列表里。

完整可运行优化版代码

你当前的代码还缺少输入合法性校验、猜结果判断、重试逻辑,下面是补全后的版本:

import random

while True:
    # 校验输入的上限值
    while True:
        print("欢迎来到猜数字游戏,你希望猜的数字最大是多少?")
        try:
            max_num = int(input())
            if max_num < 1:
                print("请输入大于等于1的整数")
                continue
            break
        except ValueError:
            print("输入不合法,请输入整数")
    
    # 生成电脑的随机选择
    computer_choice = random.randint(1, max_num)
    
    # 校验用户输入的猜测值
    while True:
        print(f"请输入你猜的数字(范围1到{max_num}):")
        try:
            user_choice = int(input())
            if 1 <= user_choice <= max_num:
                break
            print(f"请输入1到{max_num}之间的整数")
        except ValueError:
            print("输入不合法,请输入整数")
    
    # 判断结果
    if user_choice == computer_choice:
        print(f"恭喜你猜对了!电脑选的数字就是{computer_choice}")
    else:
        print(f"很遗憾你猜错了,电脑选的数字是{computer_choice}")
    
    # 询问是否继续游戏
    print("要不要再玩一次?输入y继续,其他任意键退出")
    again = input().strip().lower()
    if again != 'y':
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:18:03