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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:06