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

Python盲拍程序while循环无法终止问题求助

问题分析:while循环无法终止的核心原因

你的代码无法终止的问题出在递归调用导致的无限循环,具体细节如下:

1. 递归调用让程序永远重复执行bid函数

在bid函数中,当你输入no跳出while循环后,代码紧接着执行了这一行:

bid(player_name,player_bid)

这会直接再次调用bid函数本身,相当于程序刚结束一轮输入,立刻又从头开始新一轮的名字、出价输入流程,永远无法到达函数外部的计算最高出价和结束打印的代码。

2. 其他冗余逻辑与变量问题

  • 函数参数player_name和player_bid完全没用,因为函数内部直接用input覆盖了这两个变量的值,传入的初始值被忽略。
  • while循环里的player = "no"是冗余代码,break已经足够终止循环,不需要额外赋值。
  • 计算最高出价的max_value = max(bid_list.values())及后续打印代码,因为递归调用永远无法被执行到,写在全局作用域没有意义。

原代码错误点标注

def bid(player_name,player_bid):
    player_name = input("What's your name?")
    player_bid = input("What's your bid? PLN")
    bid_list[player_name] = player_bid

    while True:
        player = input("Are they any other users? Insert yes or no?")
        if player ==  "no":
           player = "no"  # 冗余代码
           break
    bid(player_name,player_bid)  # 这里的递归调用是核心问题!
  
max_value = max(bid_list.values())  # 永远执行不到这里
print(f"{player_name} has the highest bid - {max_value} ")

print("Thank you for playing")

player_name = ""
player_bid = 0
bid_list = {}

bid(player_name,player_bid)

简单来说,只要去掉那行递归调用的bid(player_name,player_bid),程序就能在输入no后跳出while循环,继续执行后续的最高出价计算和结束语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:05:18