求助:100 Days of Code Day9秘密拍卖程序逻辑错误排查
问题排查与修复
你的程序总是输出最后输入的出价者,核心问题出在遍历竞拍字典的逻辑里:
在最后的for循环中,你使用了变量bid来和highest_bid比较,但这个bid是while循环最后一次输入的出价数值,并不是当前遍历到的竞拍者对应的出价。因此每次比较都在用最后一次的出价更新最高值,最终结果自然是最后输入的竞拍者。
修复代码
把for循环部分修改为以下内容:
highest_bid = 0 winner = "" for bidder in bids: current_bid = bids[bidder] if current_bid > highest_bid: highest_bid = current_bid winner = bidder
说明
- 初始化
winner变量,避免极端场景下的未定义报错 - 用
current_bid = bids[bidder]获取当前遍历到的竞拍者的真实出价,再与最高出价做对比 - 修正后每次遍历都会正确校验每个竞拍者的出价,最终能找到真正的最高出价者
内容的提问来源于stack exchange,提问作者Vahaj Qureshi
相关产品推荐
相关产品推荐

