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

Python:如何将用户输入整数与字典ID值比较?自动售货机代码异常排查

问题分析与修复方案

你的代码有两个核心问题导致无法正确匹配商品ID:

  • 判断条件完全错误:你写的choice in ["idnum"]是在检查输入的整数(比如2)是否在只包含字符串"idnum"的列表里,这显然永远不成立,自然每次都走else分支。正确的做法是拿输入的choice和每个商品字典里的idnum值做比较,也就是item["idnum"] == choice。
  • 循环逻辑有误:当前代码只要第一次循环不匹配就直接break,根本没机会检查后续的商品ID。应该遍历完所有商品,找到匹配的就输出信息并终止循环;如果遍历完都没找到,再提示无效ID。

修正后的完整代码

itemstock = [
    {
        "idnum": 0,
        "name": 'Water',
        "price": 12,
    },
    {
        "idnum": 1,
        "name": 'Soda',
        "price": 14,
    },
    {
        "idnum": 2,
        "name": 'Juice',
        "price": 13,
    },
]

choice = int(input("Now, choose an item ID from the Menu and enter the ID: "))
# 标记是否找到匹配的ID
found = False
for item in itemstock:
    if item["idnum"] == choice:
        print(f"You have chosen item: {item['name']}, price: {item['price']}")
        found = True
        break  # 找到后直接退出循环,不用继续遍历
if not found:
    print("This is not a valid ID.")

改动说明

  • 新增found变量标记是否找到匹配商品,遍历结束后根据该变量判断是否输出无效提示。
  • 匹配成功时不仅输出ID,还显示商品名称和价格,更符合售货机的实际需求。
  • 找到匹配项后立即break,避免不必要的循环遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:25:35