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

Python猜词程序终端重复请求输入问题排查与修复

猜词程序重复请求输入的问题分析与修复

问题原因

  • while guess() != answer:语句会调用一次guess(),触发第一次输入;
  • 进入循环体后,glet()函数内部又调用了guess(),这会触发第二次输入;
  • 两次guess()调用都会执行独立的input()语句,导致终端两次请求输入。

修复方案

核心思路是只获取一次用户输入并保存到变量中,循环内复用这个变量,避免重复调用guess()产生多次输入。修改后的代码如下:

import random

def guess():
    x = input("What's your guess? ")
    return x

def anslet():
    q = answer[0]
    return q

# 修改glet函数,接收猜测的字符串作为参数,不再内部调用guess()
def glet(guess_str):
    w = guess_str[0]
    return w

answers = ["mouse", "sound", "apple"]
answer = random.choice(answers)
print(answer)

# 每次循环只调用一次guess(),把结果存到变量里
user_guess = guess()
while user_guess != answer:
    if glet(user_guess) == anslet():
        print("good")
    # 循环末尾重新获取下一次猜测
    user_guess = guess()

print("Correct!")

关键改动说明

  1. 把glet()函数改成接收参数的形式,不再内部调用guess(),避免额外触发输入;
  2. 循环外先获取一次用户输入,存入user_guess变量,循环内用这个变量做判断和首字母对比;
  3. 循环结束前重新调用guess()更新user_guess,保证下一次循环的输入是最新的。

这样修改后,每次循环只会触发一次输入,解决了重复请求的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:42:04