Python实现next_multiple等函数无法正常运行 断言测试不通过求解
问题排查及修复方案
现有代码问题清单
- next_multiple函数内部用
input()获取输入覆盖了传入的参数,且input()返回字符串类型,无法直接进行数学运算 - 循环逻辑存在语法错误:
break语句写在循环体外部,且循环内仅反复将poc赋值为number+1,没有递增逻辑,会陷入死循环 - 两个功能函数都没有添加
return返回值,调用后返回None,无法通过断言校验 next_prime函数仅用pass占位,没有任何功能实现- 无关打印语句
print ("Tohle prošlo")放在函数外部,加载代码时会直接执行
修复后完整代码
def next_multiple(number, k): # 计算刚好大于number的最小k的倍数 return ((number // k) + 1) * k def is_prime(n): # 辅助函数:判断是否为质数 if n <= 1: return False if n == 2: return True if n % 2 == 0: return False for i in range(3, int(n**0.5) + 1, 2): if n % i == 0: return False return True def next_prime(number): current = number + 1 while True: if is_prime(current): return current current += 1 def main(): assert next_multiple(1, 2) == 2 assert next_multiple(10, 7) == 14 assert next_multiple(10, 5) == 15 assert next_multiple(54, 6) == 60 assert next_multiple(131, 29) == 145 assert next_multiple(123, 112) == 224 assert next_multiple(423, 90) == 450 assert next_prime(1) == 2 assert next_prime(2) == 3 assert next_prime(3) == 5 assert next_prime(4) == 5 assert next_prime(11) == 13 assert next_prime(12) == 13 print("所有断言测试通过") if __name__ == "__main__": main()
修复说明
next_multiple改用整数运算实现,无需循环即可得到结果,删除了错误的输入获取逻辑,新增返回值- 新增
is_prime辅助函数实现质数判断逻辑,next_prime从传入参数+1开始遍历,返回找到的第一个质数 - 所有断言测试均可正常通过
内容的提问来源于stack exchange,提问作者K14
相关产品推荐
相关产品推荐

