|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为了找出10以内的质数,我写了两段不同的循环嵌套,while语句为什么只进行了一次内部循环,只打印了2的结果,而第二段for循环的代码却是正常进入外部循环的呢?
第一段:
i = 2
while i < 10:
j = 2
while j < i:
if i % j == 0:
print(i,"=",j,"*",i//j,sep="")
j += 1
break
else:
print(i,"是质数",sep="")
i += 1
第二段:
for i in range(2,10):
for j in range(2,i):
if i % j == 0:
print(i,"=",j,"*",i//j,sep="")
break
else:
print(i,"是质数",sep="")
第一段代码中将while j < i改为for j in range(2,i)则可实现第二段代码的效果,此情况令小弟十分费解,是否与迭代器相关?求各位大神指导。
本帖最后由 jackz007 于 2024-4-13 19:22 编辑
- i = 2
- while i < 10:
- j = 2
- while j < i:
- if i % j == 0:
- print(i , "=" , j , "*" , i // j , sep = "")
- j += 1 # 此句属于 if 语句块,意味着只能条件执行,如果在循环中 j 值不变,就会进入死循环
- break
- else:
- print(i , "是质数" , sep = "")
- i += 1
复制代码
应该改为:
- i = 2
- while i < 10:
- j = 2
- while j < i:
- if i % j == 0:
- print(i , "=" , j , "*" , i // j , sep = "")
- break
- j += 1 # 将此句从 if 语句块中移出,改为在内层循环中无条件执行
- else:
- print(i , "是质数" , sep = "")
- i += 1
复制代码
|
|