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

如何用变量或列表实现无input的Python猜数字测验游戏?

问题分析与解决

原代码错误核心

  • 直接将整个列表list与随机数number进行大小/相等比较,Python不支持列表与数字的这类运算,会触发TypeError。
  • 未从列表中提取具体猜测值,而是用整个列表参与逻辑判断,完全违背猜数字的核心逻辑。

修正后的代码方案

方案1:预设猜测列表(模拟固定输入)

提前定义猜测值列表,按顺序取数模拟用户猜测,全程无需input:

import random
number = random.randint(1, 10)

# 预设猜测值列表,模拟用户的多次尝试
guess_list = [3, 7, 5]
number_of_guesses = 0
print('我正在想一个1到10之间的数字:')

while number_of_guesses < len(guess_list):
    # 从列表中取出当前次数的猜测值
    guess = guess_list[number_of_guesses]
    number_of_guesses += 1
    print(f'当前猜测:{guess}')
    
    if guess < number:
        print('你的猜测太小了')
    elif guess > number:
        print('你的猜测太大了')
    else:
        # 猜中直接终止循环
        break

if guess == number:
    print(f'축하합니다! 당신은 {number_of_guesses}번의 시도만에 정답을 맞췄습니다.!')
else:
    print(f'아쉽지만 정답을 맞추지 못했네요. 정답은 {number} 이었습니다. 다시 도전해보세요!')

方案2:自动随机猜测(动态选值)

从候选数字列表中随机选未猜过的数值,实现程序自动猜数字:

import random
number = random.randint(1, 10)

# 生成1-10的候选数字列表
candidates = list(range(1, 11))
number_of_guesses = 0
print('我正在想一个1到10之间的数字:')

while number_of_guesses < 3:
    # 随机选一个候选值,选完后移除避免重复猜测
    guess = random.choice(candidates)
    candidates.remove(guess)
    number_of_guesses += 1
    print(f'当前猜测:{guess}')
    
    if guess < number:
        print('你的猜测太小了')
    elif guess > number:
        print('你的猜测太大了')
    else:
        break

if guess == number:
    print(f'축하합니다! 당신은 {number_of_guesses}번의 시도만에 정답을 맞췄습니다.!')
else:
    print(f'아쉽지만 정답을 맞추지 못했네요. 정답은 {number} 이었습니다. 다시 도전해보세요!')

关键修正点

  • 不再直接用整个列表参与判断,而是从列表中提取单个具体数值作为猜测变量。
  • 两种方案均通过列表/变量实现逻辑,完全规避input的使用。
  • 修正循环逻辑,确保每次循环对应一次有效猜测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:55:17