Почему break не останавливает выполнение кода?

dict = 'АКРУ'
k=0
for p1 in dict:
    for p2 in dict:
        for p3 in dict:
            for p4 in dict:
                for p5 in dict:
                    slovo = p1+p2+p3+p4+p5
                    k+=1
                    if p1=='К':
                        print(k)
                        break

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

Автор решения: splash58

насколько я знаю, в питоне break не может прервать несколько уровней. Приходится делать сложно

class BreakLoop(Exception):
    pass 


try:
    dict = 'АКРУ'
    k = 0
    for p1 in dict:
        for p2 in dict:
            for p3 in dict:
                for p4 in dict:
                    for p5 in dict:
                        slovo = p1 + p2 + p3 + p4 + p5
                        k += 1
                        if p1 == 'К':
                            print(k)
                            raise BreakLoop
except BreakLoop:
    pass
→ Ссылка
Автор решения: Robot

Ты можешь сделать так:

def test():
    dict = 'АКРУ'
    k=0
    for p1 in dict:
        for p2 in dict:
            for p3 in dict:
                for p4 in dict:
                    for p5 in dict:
                        slovo = p1+p2+p3+p4+p5
                        k+=1
                        if p1=='К':
                            print(k)
                            return
                            
test()

Просто делаешь выход из функции при определенном условии.

→ Ссылка