VS Code中Python代码if语句内break失效问题求助
问题:输入0后break无法跳出while循环
我编写的Python代码在VS Code中运行时,输入0后,if语句中的break并未生效,无法跳出while循环执行最后一个for循环。我确认语法无误且已完成调试,将break替换为pass并调整缩进后代码可正常运行,请问如何让break正常工作?
代码如下:
from contents import pantry, recipes def add_shopping_item(data: dict, item: str, amount: int) -> None: """add_shopping_item Add a tuple containing `item` and `amount` to the `data` dict. """ # if item in data: # data[item] += amount # else: # data[item] = amount data[item] = data.setdefault(item, 0) + amount display_dict = {} for index,key in enumerate(recipes): display_dict[str(index + 1)] = key shopping_list = {} while True: #Display a menu of the recipes we know how to cook print("Please choose your recipe") print("-------------------------") for key, value in display_dict.items(): print(f"{key} - {value}") choice = input(": ") if choice == 0: break elif choice in display_dict: selected_item = display_dict[choice] print(f"You have selected {selected_item}") print("Checking ingredients...") ingredients = recipes[selected_item] print(ingredients) for food_item, required_quantity in ingredients.items(): quantity_in_pantry = pantry.get(food_item, 0) if required_quantity <= quantity_in_pantry: print(f"\t{food_item} OK.") else: quantity_to_buy = required_quantity - quantity_in_pantry print(f"\tYou need to buy {quantity_to_buy} of {food_item}") add_shopping_item(shopping_list, food_item, quantity_to_buy) for things in shopping_list.items(): print(things)
解决方案
问题核心是类型不匹配:input()函数返回的是字符串类型,而你判断时用的是choice == 0(0是整数),两者永远不相等,导致break条件从未触发。
有两种修复方式:
直接对比字符串(最简单)
修改break的判断条件为:if choice == "0": break转换输入为整数(需处理非法输入)
如果希望用整数判断,需要先把输入转为整数,同时处理用户输入非数字的情况,避免报错:choice = input(": ") try: choice_int = int(choice) if choice_int == 0: break except ValueError: print("请输入有效的数字选项") # 保留后续的elif判断逻辑
内容的提问来源于stack exchange,提问作者Cemre Tombuloğlu
相关产品推荐
相关产品推荐

