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

问题描述 投票:1回答:1

该函数应该加载一个列表并打印列表中第一个和最后一个素数的总和。我已经写了它,以便创建一个新的列表,并且只有素数被添加到它的想法 - 如果它不是素数,它应该回到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
python for-loop if-statement infinite-loop break
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.