python - 使用 for 循环的 Python 双重打印
问题描述
我对编码很陌生,如果这是一个愚蠢的问题,我很抱歉。我在 Python 中遇到了这个 for 循环的问题:
for n in (2, (k / 2)):
if k % n == 0:
print ("Yes")
else:
print ("No")
问题是我得到了两个打印件,有时是相互矛盾的打印件,例如3、25、35Yes
和No
其他数字。
我的目的是检测素数。
顺便说一句,我使用 PyCharm。
谢谢你。
解决方案
语法for n in (a, b)
不会在n
values 之间循环a, a+1, a+2, ..., b
,它实际上是n
取值a
,然后b
作为语法(a, b)
定义一个您迭代的元组。
您几乎肯定在寻找range()
返回可迭代的函数,您可以在 for 循环中对其进行迭代,以便n
将值范围从a
to b
(不包括b
)。
所以:
for n in range(2, int(k / 2)):
请注意,我们还必须将结果转换为整数,int()
因为范围不接受浮点数(小数)
至于使素数测试起作用,您不想一直循环到数字的一半,您只需要向上到数字的平方根即可。此外,每当您找到一个除数时,您都可以退出循环print('no')
,break
但是当一个数字不能除掉主要候选人时,您就不能print('yes')
,因为可能存在您尚未检查的除数。所以我们只有print('yes')
在for-loop
不提前打破它的情况下完成它。这是最容易实现的功能:
def is_prime(k):
if k <= 1:
return False
for n in range(2, int(k ** 0.5) + 1):
if k % n == 0:
return False
return True
然后我们可以看到它有效:
>>> is_prime(2)
True
>>> is_prime(3)
True
>>> is_prime(4)
False
>>> is_prime(5)
True
>>> is_prime(6)
False
>>> is_prime(7)
True
>>> is_prime(8)
False
>>> is_prime(9)
False
>>> is_prime(10)
False
>>> is_prime(11)
True
推荐阅读
- amazon-web-services - 是否建议在同一个 AWS 区域部署多个相同的应用程序?
- mysql - 从所有 id 列表中选择所有最后日期
- python - 仅在一列中添加具有附加值的新行
- python - python如何查看文件对象.obj中的数据
- javascript - 单击图标时无法显示输入
- view - 哪个用户在 Snowflake 上创建了视图
- swift - 无法在表格视图内的集合视图中设置单元格大小
- mysql - 比较两个查询结果并检查它们是否都存在值
- android - 配置根项目“imagepicker”时出现问题:未找到 SDK
- google-analytics - Google Analytics Web+App 事件配置:错误“未定义 gtag”