Python函数返回值赋值给变量及while循环使用问题解决
代码问题排查与修正方案
你代码里存在几个核心逻辑错误,直接导致计数不更新、循环卡死:
remaining_guess从未被正确更新:你只在循环开始前计算了一次初始剩余次数,后续每次循环仅对guess_count做了加1操作,从未重新计算剩余次数;另外你写的re_guesses函数中int(remaining_guess_1)这行没有任何实际作用——既没有把转换结果赋值给变量,且传入的参数本身就是整数,函数最终直接返回传入的原始值,所以剩余次数永远停留在初始值3。- 作用域错误导致答案判断失效:你在循环分支内定义的
guess_word函数里,answer是函数内部的局部变量,和循环判断条件用的外层answer变量完全独立,函数内获取的用户输入不会修改外层变量值,外层answer一直是空字符串,永远满足answer != secret_word的循环条件,程序就会无限卡在提示环节。 - 存在大量冗余逻辑:你把完全相同的函数定义、执行逻辑重复写了三个分支,还把函数定义放在循环内部,每次进循环都要重新定义函数,既没必要也容易引发意料之外的问题。
修正后的可运行代码
secret_word = "Aircraft" answer = "" guess_count = 0 guess_limit = 3 # 未猜对且未用完猜测次数时持续循环 while answer != secret_word and guess_count < guess_limit: remaining_guess = guess_limit - guess_count print(f"You have {remaining_guess} remaining guesses") answer = input("Enter answer: ") guess_count += 1 # 循环结束后判定结果 if answer == secret_word: print("I can't believe you won!") else: print("You lost!!")
修正逻辑说明
- 移除了所有冗余的函数定义和重复分支,入门阶段先把线性流程写通顺,不需要强行封装函数。
- 每次进入循环第一步就实时计算当前剩余猜测次数,不需要跨循环维护
remaining_guess变量,现算的结果不会出现计数不同步的问题。 - 把用户输入的赋值逻辑放在和循环判断同一层的作用域,保证用户输入的答案能被循环条件正确读取,猜对时可以正常退出循环。
- 循环结束后直接判断最后一次输入的答案是否匹配密语,不需要再通过剩余次数倒推结果,逻辑更直观。
内容的提问来源于stack exchange,提问作者Fred Cortez
相关产品推荐
相关产品推荐

