nuo_1124 发表于 2022-10-21 12:22:13

2022-10-21-01 不懂就问 range(x,x)

各位老师,请问:
                           range(x,x)   这个结果是 none 吗?还是False

具体举例:
-------------------------------------------------------------------------------------------------

for n in range(2,10):
        for x in range(2,n):       # 如果 range(2,2),是什么结果,空值为什么不报错呢?
                if n % x == 0:
                        print(n,"=",x,"*",n//x)
                        break
        else:
                print(n,"是一个素数")

tommyyu 发表于 2022-10-21 12:31:24

返回的是一个 range 类型的对象,这个对象是可迭代的,但是其长度为 0。

由于 range 实际上是一个类,所以在代码计算 range(2, 2) 的值的时候是在调用 range 这个类的构造函数,也就返回了一个 range 类型的对象。

(这些知识在类与对象那一章小甲鱼有讲到)

jackz007 发表于 2022-10-21 12:49:25

      自己在 IDLE 中操作一下,也许就能明白了
>>> list(range(2,10))

>>> list(range(2 , 3))

>>> list(range(2,2))
[]
>>>
       很多可迭代对象都无法直接打印出内容,这个时候,可以把它变成列表,然后再打印就可以看到内容了。

nuo_1124 发表于 2022-10-21 13:06:56

jackz007 发表于 2022-10-21 12:49
自己在 IDLE 中操作一下,也许就能明白了

       很多可迭代对象都无法直接打印出内容,这个时 ...

range(2,2)
这个列表为空,那变量x娶不到值,不报错吗? 取不到值,如果不报错,那就是循环条件False,然后break了,可以这样理解吗?

jackz007 发表于 2022-10-21 13:34:41

本帖最后由 jackz007 于 2022-10-21 13:36 编辑

nuo_1124 发表于 2022-10-21 13:06
range(2,2)
这个列表为空,那变量x娶不到值,不报错吗? 取不到值,如果不报错,那就是循环条件False, ...

for x in range(2 , 2):
         不会报错,直接就不会循环。如果这个 for 循环有 else,就会直接进入,执行属于 else 的语句。

nuo_1124 发表于 2022-10-21 15:26:04

jackz007 发表于 2022-10-21 13:34
不会报错,直接就不会循环。如果这个 for 循环有 else,就会直接进入,执行属于 else 的语 ...

空迭代合法,不报错。也不是False 。然后循环条件不成立。谢谢了
页: [1]
查看完整版本: 2022-10-21-01 不懂就问 range(x,x)