Python影院票务计价代码无法叠加3D电影2美元附加费求助
问题修正方案
现有代码的核心问题
- 变量命名不合法:Python不允许变量名中出现空格,你定义的
senior discount、children discount两个变量无法正常调用,建议改为下划线分隔的senior_discount、children_discount - 票价计算逻辑拆分:你把年龄折扣计算和3D附加费计算做成了两个独立逻辑,附加费计算时直接用了原始的10元票价,没有叠加之前算好的折扣后票价,自然无法得到正确的叠加后总价
- 多分支逻辑混乱:用了多个独立if判断,会出现同时输出多个票价信息的问题,没有统一存储计算后的基础票价
- 末尾存在无效输出代码:
print('num + question1')会直接输出字符串内容,不会打印变量值,属于冗余代码
修正后可运行代码
# 计算影院票价 # 基础票价10美元 # 3D电影附加费2美元 # 老年人折扣20%(即原价的80%) # 儿童折扣10%(即原价的90%) # 金额单位:美元 base_ticket = 10 senior_discount = 0.8 children_discount = 0.9 surcharge_3d = 2 # 获取用户输入 age = int(input('请输入购票人年龄:\n')) is_3d = input('电影是否为3D格式?请输入yes/no:\n') # 第一步:计算折扣后的基础票价 if age > 60: base_price = base_ticket * senior_discount ticket_type = "老年票" elif age < 12: base_price = base_ticket * children_discount ticket_type = "儿童票" else: base_price = base_ticket ticket_type = "成人票" # 第二步:叠加3D附加费 final_price = base_price if is_3d.lower() == 'yes': final_price += surcharge_3d surcharge_tip = "已叠加3D附加费" elif is_3d.lower() == 'no': surcharge_tip = "无3D附加费" else: print("输入无效,3D格式请输入yes或no") exit() # 统一输出结果 print(f"{ticket_type}基础票价为${base_price},{surcharge_tip},最终票价为${final_price}")
改动说明
- 新增变量存储折扣后的基础票价,避免计算附加费时回到原始票价
- 合并判断逻辑,不会出现重复输出多个票价的问题
- 新增输入小写兼容,用户输入Yes/YES也能正常识别
- 统一输出所有信息,结果清晰直观
内容的提问来源于stack exchange,提问作者dbaby
相关产品推荐
相关产品推荐

