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
相关产品推荐
相关产品推荐

