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!")
关键改动说明
- 把
glet()函数改成接收参数的形式,不再内部调用guess(),避免额外触发输入; - 循环外先获取一次用户输入,存入
user_guess变量,循环内用这个变量做判断和首字母对比; - 循环结束前重新调用
guess()更新user_guess,保证下一次循环的输入是最新的。
这样修改后,每次循环只会触发一次输入,解决了重复请求的问题。
内容的提问来源于stack exchange,提问作者DoubleChair
相关产品推荐
相关产品推荐

