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

Python程序循环无法终止且卡在首次输入问题求助

程序循环无响应、无法添加新配料的问题修复

问题分析

你的代码存在两个关键问题,导致无法实现多配料添加的预期功能:

  • 配料输入仅初始化一次:requested_toppings的输入语句写在循环外部,只会在程序启动时获取一次用户输入,后续循环调用program()时始终复用第一次的配料值,无法处理新的选择。
  • 冗余的大小写转换逻辑:input(...).strip().upper().lower()属于无效操作,大写转小写完全多余,徒增代码复杂度。

修复后的代码

available_toppings = ["mushrooms", "olives", "pepperoni", "pineapple"]
# 优化配料列表打印方式,适配列表长度变化
print(f"Hello! please choose from the available toppings:\n{', '.join(topping.title() for topping in available_toppings)}\n")

# 修改函数为接收参数,避免依赖全局变量
def process_topping(topping):
    if topping in available_toppings:
        print(f"Adding {topping}..")
    else:
        print(f"Sorry, {topping} is not available!")

while True:
    # 将配料输入移至循环内部,每次循环获取新输入
    requested_topping = input("Please choose your topping:\n").strip().lower()
    process_topping(requested_topping)
    # 简化继续判断逻辑
    if input("Do you want to add another topping? (Y/N)\n").strip().upper() == "N":
        break

print("Finished making your pizza!")

修复说明

  1. 把配料输入语句移到while True循环内部,确保每次循环都能让用户输入新的配料。
  2. 将原program()函数改为接收参数的process_topping(),消除对全局变量的依赖,代码逻辑更清晰、健壮。
  3. 优化可选配料的打印逻辑,使用join方法动态生成列表内容,即使后续修改available_toppings的长度也无需调整打印代码。
  4. 简化是否继续添加的判断逻辑,仅保留upper() == "N"的有效转换,避免冗余操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:15:48