从python中的if循环返回for循环

时间:2019-03-09 19:12:40

标签: python for-loop if-statement infinite-loop break

该函数应该加载列表并打印列表中第一个和最后一个素数的和。我已经编写了它,以便创建一个新列表,并且只添加了质数的想法-如果它不是质数,则应回到for循环的开头。 我希望我的函数回到

之后的for循环的开头
if L[i] % j == 0:

因为我只希望将质数附加到y,但是我不认为'break'在这里是正确的,因为当我调用函数时,我一直在打印整个列表。我已经尝试过“ break”,“ pass”,“ continue”和无限循环(尽管我可能没有正确完成)。请帮忙???

def first_plus_last_prime(L):
    y = []
    for i in range(len(L)):

        if L[i] < 2:
            break
        for j in range(2, L[i]):
            if L[i] % j == 0:
                break
        y.append(L[i])

    print(y)
    print(y[0])
    print(y[-1])
    t = y[0] + y[-1]
    return t

1 个答案:

答案 0 :(得分:2)

您可以使用else语句:

def first_plus_last_prime(L):
    y = []
    for i in range(len(L)):

        if L[i] < 2:
            break

        # Look for prime
        for j in range(2, L[i]):
            if L[i] % j == 0:
                break
        else:
            y.append(L[i])

    print(y)
    print(y[0])
    print(y[-1])
    t = y[0] + y[-1]
    return t

感谢@UlrichEckhardt提供的信息。 https://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops