带有for循环的Python双重打印

时间:2018-08-26 15:19:19

标签: python for-loop

我在编码方面还很陌生,所以很抱歉,这很愚蠢。我在Python的for循环中遇到了问题:

for n in (2, (k / 2)):
    if k % n == 0:
        print ("Yes")
    else:
        print ("No")

问题是我得到两张印刷品,有时是矛盾的,例如YesNo分别印有3、25、35和其他数字。

我的目的是检测素数。

我使用PyCharm btw。

谢谢。

2 个答案:

答案 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