如何将用户输入设为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]改为:
因为Python的cc = list(range(1, num + 1))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
相关产品推荐
相关产品推荐

