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

Python如何通过字典取值计算含小费的拿铁订单总费用

拿铁订单总金额计算实现(Python字典练习题)

核心要求

  • 以字典结构存储拿铁杯型与对应售价:
    • Short:2.10美元
    • Tall:2.95美元
    • Grande:3.65美元
    • Venti:4.15美元
  • 遍历字典,按指定格式打印全量杯型价目表
  • 接收用户输入的杯型选择、小费百分比,将杯型对应售价乘以小费比例计算含小费总金额,格式化输出结果

原有代码问题

  • 执行顺序错误:未完成字典组装、未打印价目表就提前引导用户输入,用户看不到可选选项
  • 价目打印格式不符合要求:未添加美元符号、未固定保留两位小数
  • 缺失核心取值逻辑:未根据用户选择的杯型从字典中取出对应基础售价
  • 总金额输出逻辑错误:打印价目的函数无返回值,直接传入格式化语句会得到空值

修正后完整代码

def print_menu(price_dict):
    # 遍历字典按要求格式打印价目表,价格固定保留两位小数
    for size, price in price_dict.items():
        print(f"{size} latte: ${price:.2f}")

# 初始化杯型-售价字典
latte_prices = {}
sizes = ['Short', 'Tall', 'Grande', 'Venti']
prices = [2.10, 2.95, 3.65, 4.15]
for size, price in zip(sizes, prices):
    latte_prices[size] = price

# 先打印价目表再引导用户输入
print_menu(latte_prices)

# 接收用户杯型选择,做简单输入兼容:去除首尾空格、首字母大写匹配字典键
user_choice = input('Please choose a size: ').strip().capitalize()
# 简单校验输入合法性
while user_choice not in latte_prices:
    user_choice = input('Invalid size, please choose from Short/Tall/Grande/Venti: ').strip().capitalize()

# 接收小费百分比,转换为计算系数
tip_percent = float(input('How much would you like to tip (enter percentage number, e.g. 15 for 15%)? '))
tip_multiplier = 1 + tip_percent / 100

# 计算总金额:基础售价 * 小费系数,保留两位小数
total_cost = latte_prices[user_choice] * tip_multiplier
print('The total cost is ${:.2f}'.format(total_cost))

代码说明

  • 调整了执行顺序:先组装字典、打印价目表,再接收用户输入,符合正常交互逻辑
  • 打印价目时用:.2f格式化浮点值,固定显示两位小数,完全匹配题目要求的输出格式
  • 增加了简单的输入兼容和校验,避免用户输入空格、小写、无效杯型导致程序报错
  • 核心计算逻辑:通过用户输入的杯型作为键,直接从字典中取对应基础价格,乘以转换后的小费系数得到总金额,格式化后输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:48:14