python - 使用 for 和 while 循环编写素数函数的最 Pythonic 方式是什么?
问题描述
我即将执行一个函数,其目的是如果它的参数是或不是素数,则返回一个素数/非素数语句。我成功地使用了一个 for 循环:
def prime1(n):
z = []
for i in range (1, n+1):
if (n/i).is_integer():
z.append(i)
i=i+1
if len(z) == 2:
print ("Prime")
else:
print ("Not prime")`
然后我尝试做同样的事情,但使用 while 循环:
def prime2(n):
z = []
i = 1
while i < int(len(range(1, n+1))):
if (n/i).is_integer():
z.append(i)
i=i+1
if len(z) == 2:
print ("Prime")
else:
print ("Not prime")
不幸的是,我的系统继续计算而没有打印输出。
你能解释一下我在哪里犯了错误吗?
解决方案
The在你的循环i = i + 1
中什么都不做,因为值被迭代器的下一个值覆盖;有效地,循环在每次迭代中为你执行,无论是否划分。你需要在你的循环中做同样的事情:for
i
for
i = i + 1
i
n
while
while i < n + 1:
if (n/i).is_integer():
z.append(i)
i = i + 1
推荐阅读
- c++ - 如何在类构造函数中绑定对堆栈分配类的引用?
- sql - CSV 导入失败 - 批量加载数据转换错误(指定代码页的类型不匹配或无效字符)
- linux - “软件包 linux-modules-extra-5.4.0-56-generic 需要重新安装,但我找不到它的存档。” 错误弹出
- python - 在 DetailView 中使用对象
- java - Java Executor 获得第一个匹配条件的结果
- javascript - 在 node.js 中的文件之间共享变量
- php - 是否有可能在 PhPMyAdmin 中将所有实例添加到一行而不是四个?
- amazon-web-services - Addressable 1.8.5 无法从 AWS S3 加载远程场景的问题
- c - 无约束内联汇编的引用变量
- java - 返回类型错误 - 返回类型不兼容