有人可以解释一下这些关于python的命令吗?

时间:2015-02-25 08:42:49

标签: python-3.x

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

我不明白上面的命令想要做什么。 我知道循环,但你能解释这个命令实际上在做什么吗?

1 个答案:

答案 0 :(得分:1)

Python的forwhile循环有一个特性,对于那些更熟悉其他编程语言中的循环的人来说可能会让人感到困惑:你可以在循环之后添加一个else子句体。

仅当循环以正常方式终止(for循环到达iterable的末尾或while循环的条件为false)时,才会运行else块。如果循环被break语句终止,则不会运行它。

在您正在查看的代码中,内部循环通过测试是否可以被任何n值均分来测试,以查看数字x是否为素数。如果x确实将其划分,则会打印因子xn // x,并且break语句将结束循环。

如果在range中找不到这样的因素,则循环结束。如上所述,这是运行else块的情况。它打印出n为素数。