鱼C论坛

 找回密码
 立即注册
查看: 2683|回复: 5

[已解决]2022-10-21-01 不懂就问 range(x,x)

[复制链接]
发表于 2022-10-21 12:22:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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,"是一个素数")

最佳答案
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 的语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-21 12:31:24 | 显示全部楼层
返回的是一个 range 类型的对象,这个对象是可迭代的,但是其长度为 0。

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

(这些知识在类与对象那一章小甲鱼有讲到)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 12:49:25 | 显示全部楼层
        自己在 IDLE 中操作一下,也许就能明白了
>>> list(range(2,10))
[2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(2 , 3))
[2]
>>> list(range(2,2))
[]
>>> 
       很多可迭代对象都无法直接打印出内容,这个时候,可以把它变成列表,然后再打印就可以看到内容了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 13:06:56 | 显示全部楼层
jackz007 发表于 2022-10-21 12:49
自己在 IDLE 中操作一下,也许就能明白了

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

range(2,2)
这个列表为空,那变量x娶不到值,不报错吗? 取不到值,如果不报错,那就是循环条件False,然后break了,可以这样理解吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 的语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 15:26:04 | 显示全部楼层
jackz007 发表于 2022-10-21 13:34
不会报错,直接就不会循环。如果这个 for 循环有 else,就会直接进入,执行属于 else 的语 ...

空迭代合法,不报错。也不是False 。然后循环条件不成立。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 09:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表