为什么我的range函数右边的数值不在运行包括范围
源码:for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n,"=",x,"*",n//x)
break
else:
print("他是一个素数")
结果:
他是一个素数
4 = 2 * 2
他是一个素数
他是一个素数
他是一个素数
6 = 2 * 3
他是一个素数
他是一个素数
他是一个素数
他是一个素数
他是一个素数
8 = 2 * 4
他是一个素数
9 = 3 * 3
问题:
2这个数值为什么没有包含在内? range 本来就是 左闭右开 的呀,右边的数值不包括是很正常的 isdkz 发表于 2022-3-15 20:55
range 本来就是 左闭右开 的呀,右边的数值不包括是很正常的
左闭右开的话,2应该也算在内的呀,小甲鱼的视频里也包括了2的
有2所对应的结果 本帖最后由 isdkz 于 2022-3-15 22:07 编辑
在此岸 发表于 2022-3-15 20:58
左闭右开的话,2应该也算在内的呀,小甲鱼的视频里也包括了2的
有2所对应的结果
但是右开是 首要前提,右边的值肯定是不包含在内的,
你的代码里没有把 n 加一,导致第一个 n 是 2 的时候没有把 2 包含在里面。
for n in range(2,10):
for x in range(2,n + 1): # 注意这里
if n % x == 0:
print(n,"=",x,"*",n//x)
break
else:
print("他是一个素数") 代入看一下,当第一个for循环n是2的时候,第二个for就是for x in range(2, 2),问题就很明显了,range(2, 2)是没有任何值的,所以n是2的时候根本没有进入第二个循环。 isdkz 发表于 2022-3-15 21:02
但是右开是 首要前提,右边的值肯定是不包含在内的,
你的代码里没有把 n 加一,导致第一个 n 是 2...
谢谢,我懂了{:9_232:} hrpzcf 发表于 2022-3-15 21:13
代入看一下,当第一个for循环n是2的时候,第二个for就是for x in range(2, 2),问题就很明显了,range(2, 2 ...
谢谢,我懂了{:9_228:}
页:
[1]