【问题标题】:Please can someone explain me these commands about python?请有人能解释一下这些关于python的命令吗?
【发布时间】:2015-02-25 08:42:48
【问题描述】:
>>> 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

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

【问题讨论】:

  • 你能花点时间阅读一下 Python 文档吗?
  • 背景是什么?你在看书吗?一篇文章?或者只是看朋友的代码?帮助我们理解。我们实际上无法教您如何编写 Python 代码,但我们可以帮助您学习。 (如果我从字面上回答你的问题,那将是“生成集合的两个循环,一个可分性测试,打破循环,以及一个我忘记存在的非常非常漂亮的 for/else 构造”。)
  • 其实我在网上找到了这段代码。我对编码感到困惑,它实际上是做什么的。

标签: python-3.x


【解决方案1】:

Python 的 forwhile 循环有一个功能,可能会让更熟悉其他编程语言中的循环的人感到困惑:您可以在循环主体之后放置 else 子句。

else 块将仅在循环以正常方式终止时运行(for 循环到达可迭代的末尾或 while 循环的条件为假)。如果循环被break 语句终止,它将不会运行。

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

如果在range 中没有找到这样的因素,则循环结束。正如我上面提到的,这是运行else 块的情况。它打印出n 是素数。

【讨论】:

  • 谢谢你的帮助。你真的帮了我这个忙。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-24
  • 2021-12-06
相关资源
最近更新 更多