当我出于某种原因运行以下代码时,它表示该中断不正确,但是如果删除该中断,则可以使用。
有人可以帮助我了解原因吗?
composites = []
for i in range(101):
for j in range(i):
if (i % j) == 0:
composites.append(i)
break
print("Composites: ", *composites)
答案 0 :(得分:3)
提供的示例代码引发了ZeroDivisionError
而不是中断错误。第二个范围存在问题,因为模函数不能用0来完成。
由于组合不是非质数,因此应从2开始进行因数检查。将第二个范围函数更改为range(2, i)
应该可以解决此问题。
composites = []
for i in range(101):
for j in range(2, i):
if (i % j) == 0:
composites.append(i)
break
print("Composites: ", *composites)
答案 1 :(得分:1)
此代码在python 3.7中对我有效,range(10)将产生[0,1,2,3,4,5,6,7,8,9]这将产生ZeroDivisionError: integer division or modulo by zero
composites = []
for i in range(1,101):
for j in range(2,i):
if (i % j) == 0:
composites.append(i)
break
print("Composites: ", *composites)