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

Python自动售货机程序问题求助:提示不显示与变量未定义

修复Python自动售货机程序的两个问题

问题1:user_val未定义错误

你的代码在执行if int(float(user_val)) == 0:判断时,user_val还未被赋值——因为user_val = float(input())这条赋值语句在判断逻辑之后,Python解释器会优先执行前面的代码,此时变量还不存在,因此抛出未定义错误。

解决方法:调整代码顺序,先获取用户输入,再进行判断;如果需要提前进入循环,也可以先初始化user_val为非0值。

问题2:“0 to cancel”提示无法显示且位置错误

原来的逻辑是当user_val为0时才打印提示,但此时用户还未输入,这个判断根本无法触发。你需要在展示完所有货币选项后、用户输入前,直接打印提示,明确告知用户输入0可取消操作。

另外,你提到需要通过循环模拟操作,输入0终止循环,因此需要给代码添加while循环结构。

修复后的完整代码

print("*********************************")
print("Welcome to Vending Machine Bravo!")
print("*********************************")
print("If you would like to make a selection, please insert the appropriate currency into the machine.")

# Currency deposit
num_5Dollars = 5.00
num_Dollars = 1.00
num_Quarters = .25
num_Dimes = .10
num_Nickels = .05
num_Pennies = .01 
currency = [num_5Dollars, num_Dollars, num_Quarters, num_Dimes, num_Nickels, num_Pennies]

# 循环模拟操作,直到用户输入0终止
while True:
    # 打印货币选项
    print("\nAvailable currency options:")
    print("5.00 for $5 bills")
    print("1.00 for $1 bills")
    print(".25 for Quarters")
    print(".10 for dimes")
    print(".05 for nickels")
    print(".01 for pennies")
    # 在输入前打印取消提示
    print("0 to cancel")

    # 获取用户输入并处理非法值
    try:
        user_val = float(input("Enter your selection: "))
    except ValueError:
        print("Invalid input, please enter a number.")
        continue

    # 判断是否取消操作
    if int(user_val) == 0:
        print("Operation cancelled.")
        break
    # 处理有效货币输入
    elif user_val in currency:
        print(f"Accepted {user_val}")
        # 可在此添加金额累加、商品选择等后续逻辑
    else:
        print("Invalid currency, please try again.")

关键修复点说明

  • 将货币选项打印逻辑放入循环,每次循环重新展示选项,符合售货机重复操作的场景
  • 在用户输入之前直接打印0 to cancel提示,确保用户能看到操作指引
  • 先执行user_val = float(input())获取输入,再进行判断,彻底解决变量未定义问题
  • 添加try-except捕获非法输入(如用户输入非数字内容),提升程序健壮性
  • 使用while True循环,当用户输入0时执行break终止循环,实现需求的终止逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:56:20