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

Python编程:split_bill账单拆分函数错误排查求助

账单拆分函数split_bill代码错误排查

原代码中的错误点:

  • 赋值与语法错误:用比较运算符==做赋值操作,正确应该用=;Python语句不需要以分号;结尾。
  • 小费计算逻辑错误:20%小费的正确计算方式是total * 0.2,原代码里的total ** 0.2是计算total的0.2次方(即开5次方),完全不符合需求。
  • 变量命名冲突:把计算结果赋值给了函数名split_bill,会覆盖函数本身的引用,应该换用其他变量名(比如per_person)。
  • 字符串格式化错误:打印时直接把'split_bill'作为字符串拼接,无法输出实际计算的金额,需要用字符串格式化(如f-string)插入变量值。
  • 测试函数问题:test_split_bill不需要接收total, num_people参数;print语句的end参数使用错误,会导致测试提示和输出结果混乱。

修正后的代码:

def split_bill(total, num_people):
    # 计算20%小费
    tip = total * 0.2
    # 计算每人应付金额
    per_person = (total + tip) / num_people
    # 使用f-string格式化输出指定内容
    print(f"Each person pays {per_person} dollars.")
    # 无返回值可省略return,或显式返回None

def test_split_bill():
    print("Testing split_bill...")
    # 断言函数返回None(符合需求)
    assert split_bill(10, 3) == None  # 输出:Each person pays 4.0 dollars.
    assert split_bill(55, 4) == None  # 输出:Each person pays 16.5 dollars.
    assert split_bill(0, 9) == None   # 输出:Each person pays 0.0 dollars.
    assert split_bill(73, 5) == None  # 输出:Each person pays 17.52 dollars.
    assert split_bill(109, 8) == None # 输出:Each person pays 16.35 dollars.
    print("... done!")

# 执行测试
test_split_bill()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:48:24