团团要加油鸭 发表于 2021-7-22 09:17:38

for循环的for n in range (2,2):的结果是什么

for循环中的
for x in range (2,2):的结果是什么?
> for n in range(2,10):
        for x in range(2,n):
                if n%x==0:
                        print(n,"=",x,"*",n//x)
                        break
        else:
                print(n,"是一个素数")

               
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3

xiaosi4081 发表于 2021-7-22 09:20:38

range(2,2),就只会生成一个空的可迭代对象,for循环就不会执行

团团要加油鸭 发表于 2021-7-22 09:30:14

xiaosi4081 发表于 2021-7-22 09:20
range(2,2),就只会生成一个空的可迭代对象,for循环就不会执行

指的是 for x in range(2,n):
         在第一次执行时会生成一个空的迭代对象,因此外边的for循环,即
         for n in range(2,10)就不会被执行,也就是跑了一遍,最后执行了else语句,打印出了2是一个素数,是吗?

青出于蓝 发表于 2021-7-22 09:52:58

本帖最后由 青出于蓝 于 2021-7-22 09:54 编辑

团团要加油鸭 发表于 2021-7-22 09:30
指的是 for x in range(2,n):
         在第一次执行时会生成一个空的迭代对象,因此外边的for循环, ...

没错,会直接显示2是一个素数,中间的判断会直接跳过去.。
这个方法挺妙....之前没想到,以前我都是直接把2放进素数列表
学到了学到了

团团要加油鸭 发表于 2021-7-22 10:19:37

O(∩_∩)O哈哈~,互相进步

Twilight6 发表于 2021-7-22 10:22:31

团团要加油鸭 发表于 2021-7-22 09:30
指的是 for x in range(2,n):
         在第一次执行时会生成一个空的迭代对象,因此外边的for循环, ...


for n in range(2,10)就不会被执行

for n in range(2,10) 肯定会正常循环执行的,你可能想说的是 for x in range(2,2) 不会被执行

但是 for x in range(2,2) 会被执行,只是相当于一开始循环就结束了循环,而且循环属于正常停止

所以没有执行到 break ,那么也就会执行 第二个for 循环下的 else 代码块,打印出 2 是一个素数

团团要加油鸭 发表于 2021-7-22 10:38:53

Twilight6 发表于 2021-7-22 10:22
for n in range(2,10) 肯定会正常循环执行的,你可能想说的是 for x in range(2,2) 不会被执行
...

嗯嗯,你解释的更加清晰明了了,赞

laowujian88 发表于 2022-11-23 01:02:55

我也想了好久,2%2 不是等于 0 吗,原来如此,,,,,点赞~
页: [1]
查看完整版本: for循环的for n in range (2,2):的结果是什么