否则执行,如果在for循环中执行

时间:2020-04-06 11:24:34

标签: python-3.x

#print all Prime numbers between 1 and 100

for x in range(1, 101):
    for z in range(2, x):
        if x % z == 0:
            break
    else:
        print(x, end=",")

2 个答案:

答案 0 :(得分:1)

写这个的不同方式是

for x in range(1, 101):
    f = 0
    for z in range(2, x):
        if x % z == 0:
            f = 1
            break
    if f == 0:
        print(x, end=",")

这里f只是在检查我们是否找到一个将x完全除的数字。这正是else循环情况下for语句提供给我们的功能。

更早的else尚未附加if,它处于for级别。

如果您查看手册,将会发现这确实是正确的。

for x in range(1, 101):
    f = 0
    for z in range(2, x):
        if x % z == 0:
            break
    else:
        # loop didn't find anything. So we are falling back to this.
        print(n, 'is a prime number')

来自manual

循环语句可以包含else子句;在 循环时执行 通过用尽可迭代(带有for) 或当 条件变为false(带有while),但 不会在循环为 被中断语句终止

答案 1 :(得分:0)

一个简单的缩进错误导致了这种情况。该代码将是:

for x in range(1, 101):
    for z in range(2, x):
        if x % z == 0:
            break
        else:
            print(x, end=",")

else语句用于if块,而不是for循环。

相关问题