|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
萌新求助。为啥这个else和if对齐做出来就会有重复,往前缩进一个就不正常。 老甲鱼讲的我没理解
>>> 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, "是一个素数")
3 是一个素数
4 = 2 * 2
5 是一个素数
5 是一个素数
5 是一个素数
6 = 2 * 3
7 是一个素数
7 是一个素数
7 是一个素数
7 是一个素数
7 是一个素数
8 = 2 * 4
9 是一个素数
9 = 3 * 3
这个问题是因为else语句的位置不对导致的。在这个代码块中,else语句是与for循环对齐的,所以它会在内层循环的每次迭代结束后都执行一次。这不是我们想要的结果。
正确的做法是将else语句与if语句对齐,这样它就只会在内层循环完全迭代后才会执行。修改后的代码如下:
- 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
复制代码
这样就可以正确地输出素数和合数了。
|
|