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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:01:05