我在编码方面还很陌生,所以很抱歉,这很愚蠢。我在Python的for循环中遇到了问题:
for n in (2, (k / 2)):
if k % n == 0:
print ("Yes")
else:
print ("No")
问题是我得到两张印刷品,有时是矛盾的,例如Yes
和No
分别印有3、25、35和其他数字。
我的目的是检测素数。
我使用PyCharm btw。
谢谢。
答案 0 :(得分:4)
语法 .andWhere('time','>',time)
不会在值for n in (a, b)
之间循环n
,不会使a, a+1, a+2, ..., b
在值n
之间循环。然后a
作为语法b
定义了一个您要迭代的元组。
您几乎肯定在寻找(a, b)
函数,该函数返回一个可迭代的函数,您可以在for循环中对其进行迭代,以便range()
取值范围从n
到{ {1}}(不包括a
)。
所以:
b
请注意,我们还必须使用b
将结果转换为整数,因为range不接受浮点数(小数)
关于使主要测试有效,您不希望一直循环到最大数字的一半,只需要增加到数字的平方根即可。另外,每当找到除数时,都可以for n in range(2, int(k / 2)):
和int()
进行循环,但是当数字不除质数候选项时,就不能print('no')
除以您尚未检查的除数。因此,只有在完成break
且不及早退出的情况下,我们才能print('yes')
。使用功能最容易实现:
print('yes')
然后我们可以看到它有效:
for-loop
答案 1 :(得分:2)
(2, (k / 2))
是两个值的元组,不是范围。这意味着循环将始终重复两次,一次迭代的值为2
,另一次迭代的值为k / 2
。
您需要创建range
类的实例:
for n in range(2, int(k / 2)):
...
该range
对象将创建一个可以迭代的对象,其值从2
到(k / 2) - 1
。