测试用例执行成功但N-K操作代码报运行时错误,求原因分析
问题背景
给定两个整数N和K,可执行任意次(含0次)将N替换为N−K的操作,目标是得到最小的非负整数N值。
提供代码
T=int(input()) for i in range(T): N,K=list(map(int,input().split())) if N<K: print(N) else: temp=N % K print(temp)
测试用例
3 5 2 4 4 2 5
当前问题
上述测试用例执行成功,但代码运行时出现错误,请问错误原因是什么?
错误原因分析
- 代码未处理K=0的边界情况:当输入的K为0时,执行
N % K会直接抛出ZeroDivisionError(除以零错误)。 - 从逻辑上来说,当K=0时,执行N−K的操作不会改变N的值,此时最小的非负整数就是N本身,但原代码没有针对这种情况做判断。比如如果测试用例里出现
10 0这样的输入,代码就会报错。
内容的提问来源于stack exchange,提问作者SSV_dhruv
相关产品推荐
相关产品推荐

