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

如何在Python小费计算器中一次性输入多人姓名并存储为独立值

改进小费计算器:一次性输入多人姓名并输出每人应付金额

问题分析

你不需要把每个姓名存储为独立变量(如name_1、name_2),这种方式扩展性极差——如果有10个人,你就得定义10个变量。用列表存储姓名是更合理的方案,既能灵活处理任意数量的人员,也方便后续遍历输出。

同时注意你原代码的计算逻辑有误:bill * (tip / 100) / people只计算了每人需承担的小费部分,而非总应付金额(账单+小费),下面的代码会一并修正这个问题。

修改后的完整代码

print("welcome to the tip calculator :D")
bill = float(input("what was the total bill £: "))
tip = float(input("what percentage tip would you like to give 10? 12? 15? More?: "))

# 一次性输入所有姓名,用逗号分隔(示例输入:Alice, Bob, Charlie Brown)
names_input = input("Write down the names of the people, separated by commas: ")
# 分割输入字符串为姓名列表,自动去除每个姓名前后的空格
names = [name.strip() for name in names_input.split(',')]

# 用姓名列表的长度获取参与人数,避免手动输入人数与实际姓名数量不一致
people_count = len(names)
# 计算每人需支付的总金额(账单+小费)
total_per_person = (bill * (1 + tip / 100)) / people_count
# 格式化金额为两位小数
total_per_person = "{:.2f}".format(total_per_person)

# 输出每人的应付金额
print("\nPayment breakdown:")
for name in names:
    print(f"{name} pays £{total_per_person}")

关键代码解释

  1. 姓名输入与处理

    • names_input.split(','):将用户输入的字符串按逗号分割成子字符串列表,比如输入"Alice, Bob, Charlie"会得到["Alice", " Bob", " Charlie"]。
    • name.strip():去除每个姓名前后的空格,处理用户输入时可能的空格冗余,最终得到干净的姓名列表["Alice", "Bob", "Charlie"]。
  2. 人数自动获取

    • 用len(names)直接获取参与人数,无需用户单独输入,彻底避免“输入人数和实际姓名数量不匹配”的错误。
  3. 金额计算修正

    • bill * (1 + tip / 100):先计算包含小费的总账单金额(原始账单 + 小费),再除以人数得到每人应付的总金额,这才是符合实际需求的计算逻辑。
  4. 遍历输出

    • 用for循环遍历姓名列表,逐个输出每个人的应付金额,无论参与人数多少都能适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:13:09