Питон, как завершить вложенные циклы без exit()

numbers=['']
n=int(input())
for _ in range(n): numbers.append(int(input()))
s=int(input())
for i in reversed(range(1,n+1)):
    for g in range(1,i+1):
        if numbers[i]*numbers[g]==s:
            # Тут надо чтоб циклы прервались. 

Вот код, мне нужно, чтобы при выполнении условия заканчивался вложенный цикл и основной. Как это можно сделать без доп условий или метода exit()?


Ответы (4 шт):

Автор решения: Oopss
def f():    
    numbers=['']
    n=int(input())
    for _ in range(n):
    numbers.append(int(input()))
    s=int(input())
    for i in reversed(range(1,n+1)):
        for g in range(1,i+1):
            if numbers[i]*numbers[g]==s:
                # Тут надо чтоб циклы прервались. 
                return 
→ Ссылка
Автор решения: Nikolai Vorobiev

Try/except.

try:
  for i in reversed(range(1,n+1)):
    for g in range(1,i+1):
        if numbers[i]*numbers[g]==s:
            # Тут надо чтоб циклы…
            raise Exception
except Exception:
    pass
#Идём дальше
→ Ссылка
Автор решения: Stanislav Volodarskiy
for i, g in ((i, g) for i in reversed(range(1, n + 1)) for g in range(1, i + 1)):
    if numbers[i] * numbers[g] == s:
        break

P.S. Любой каприз за ваши деньги.

P.P.S. В вашем коде обращения за конец списка и первый элемент не обрабатывается. Это я не правил.

P.P.P.S. В питоне такие вещи делаются отдельным генератором, но это с функциями если.

→ Ссылка
Автор решения: vitidev

Вот так

for x in xrange(10):
    for y in xrange(10):
        print x*y
        if x*y > 50:
            break
    else:
        continue  
    break

Если вложенный цикл дошел до конца, то сработает continue для внешнего цикла. Если же был прерван по break, то else не сработает и он дойдет до break внешнего цикла

Точно так же можно повышать уровни вложенности. Вот пример для трех

for x in xrange(10):
    for y in xrange(10):
        for z in xrange(10):
            print x,y,z
            if x*y*z == 30:
                break
        else:
            continue
        break
    else:
        continue
    break
→ Ссылка