满足退出条件时While循环无法正常终止问题求助
问题根源
- 循环条件判断时机错误:你在循环开始前判断上一轮的
itemName是否为quit,当你输入quit后,会先执行完本次循环内的所有代码(把quit追加到列表、询问对应价格),直到下一轮循环开始时才会触发退出条件,因此会多出来一次价格询问 - 代码未初始化
items列表,运行时会直接报错 - 追加元素时用的是上一轮循环存储的
itemPrice,导致商品和价格对应错误 - 最终打印用
items[:-1]是为了删掉误加入的quit元素,属于临时补丁,根源问题解决后不需要这个操作
修复后代码
# 初始化存储商品的列表 items = [] while True: itemName = input('What item would you like to add?').lower().strip() # 输入quit直接终止循环,不执行后续逻辑 if itemName == 'quit': break itemPrice = input(f'What is the price of {itemName}?').strip() items.append(f'{itemName} ${itemPrice}') # 直接打印所有有效元素 for item in items: print(item)
修改说明
- 用
while True构建无限循环,匹配退出条件时直接用break终止,从根源避免循环判断时机错误的问题 - 输入
itemName后立刻做退出判断,匹配quit就直接跳出,不会触发后续的价格询问和元素追加操作 - 调整代码顺序,先获取当前商品的价格,再把商品和对应价格追加到列表,解决对应关系错误的问题
- 移除了多余的列表切片打印逻辑,修复后列表中不会存入
quit相关的无效内容
内容的提问来源于stack exchange,提问作者Enmanuel De Los Santos Cruz
相关产品推荐
相关产品推荐

