zyBooks Python精确找零函数单元测试无输出问题求助
Python zyBooks作业测试无输出问题排查建议
问题概述
作业要求编写程序:以整数输入总零钱数,用最少硬币输出找零(每种硬币占一行,需正确处理单复数);输入≤0时输出no change;必须定义并调用exact_change(user_total)函数,返回num_dollars、num_quarters、num_dimes、num_nickels、num_pennies。本地PyCharm运行正常,但zyBooks的两项单元测试(硬编码调用exact_change(300)和exact_change(141))显示无输出。
核心排查方向
- 函数返回值顺序严格匹配要求:zyBooks的单元测试会按
num_dollars、num_quarters、num_dimes、num_nickels、num_pennies的固定顺序接收返回值,若返回顺序错位(比如将num_pennies和num_nickels位置颠倒),测试调用后无法获取正确数值,会导致无输出。 - 输出逻辑与函数调用解耦:若输出逻辑仅写在
if __name__ == "__main__"块中,依赖用户输入触发,而zyBooks直接调用exact_change函数时未触发输出逻辑,就会出现无输出情况。需确保拿到函数返回值后,无论调用场景如何,都能执行输出逻辑。 - 单复数处理逻辑无错误:检查单复数判断代码,比如:
若判断条件错误(如漏写if num_dollars == 1: print("1 dollar") elif num_dollars > 0: print(f"{num_dollars} dollars")==1的分支、字符串拼写错误,比如把pennies写成pennys),会导致输出为空或格式不符。 - 硬币数量计算逻辑正确性:验证
exact_change函数的硬币计算逻辑:
若整除、取余操作错误,会导致返回的硬币数量全为0,进而无输出。比如300分应返回def exact_change(user_total): num_dollars = user_total // 100 remaining = user_total % 100 num_quarters = remaining //25 remaining %=25 num_dimes = remaining //10 remaining %=10 num_nickels = remaining //5 num_pennies = remaining %5 return num_dollars, num_quarters, num_dimes, num_nickels, num_pennies(3,0,0,0,0),141分应返回(1,1,1,1,1),可在本地打印函数返回值验证。 - 零值硬币的输出过滤:作业要求仅输出数量大于0的硬币,若错误输出了数量为0的硬币,或过滤条件写错(如用
>=0而非>0),可能导致zyBooks判定为无效输出。 - 输出格式严格匹配:确保输出的硬币名称完全符合要求(小写、拼写正确),比如
1 penny而非1 Penny,2 pennies而非2 penny,zyBooks对格式匹配要求极高,细微错误会被判定为无输出。
内容的提问来源于stack exchange,提问作者Kevin Case
相关产品推荐
相关产品推荐

