我已经工作了一个多小时,无法使我的功能通过单元测试。我的代码如下:
def miles_to_laps(x):
laps = float(x * 4)
return print('%0.2f' % laps)
if __name__ == '__main__':
user_miles = float(input())
miles_to_laps(user_miles)
输出是正确的,但是当它执行单元测试时,我得到了正确的答案,但是之后却抛出错误。我也在下一个实验中尝试过,它正在做同样的事情。请参阅下文。
例如,如果输入为2.2 我得到8.80
但如果输入为miles_to_laps(1.5) 我得到
6.00
Traceback (most recent call last):
File "zyLabsUnitTestRunner.py", line 10, in <module>
passed = test_passed(test_passed_output_file)
File "/home/runner/local/submission/unit_test_student_code/zyLabsUnitTest.py", line 20, in test_passed
diff_amount = student_result - 6
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
4: Unit test
答案 0 :(得分:0)
看来问题不在给定的代码内,通过我的测试,它可以很好地工作。也许是因为您尝试使用的任何功能都不支持浮点格式
编辑:刚发现问题,您从函数返回了None值,您不能从中减去
修复:将函数返回一个变量, 并执行这样的代码- (浮动(可变)-6) 可以让您获得以前失败的结果
答案 1 :(得分:0)
您的问题是您要从函数中返回None
,但是其他一些代码希望您正在return
输入一个数字。
此行不符合您的预期:
return print('%0.2f' % laps)
这会打印出圈数(带两位小数),但随后返回print
返回的值,该值始终为None
。如果您想返回该数字,则可能应该只进行return laps
。如果需要,呼叫者可以处理打印。可能您想同时打印并返回该值,在这种情况下,您将需要使用单独的语句:
print('%0.2f' % laps)
return laps