почему команда "break" выдаёт ошибку?(Python)

Рейтинг: -2Ответов: 3Опубликовано: 13.01.2023

код:

import random

def handman():
    print("Добро пожаловать в игру 'Виселица'!")
    
    word_list = ['мандарин', 'яблоко', 'груша', 'виноград', 'апельсин', 'манго']
    secret = random.choice(word_list)
    guesses = 'м,я,г,в,а,м'
    turns = 5
    
    while turns > 0:
        missed = 0
        for letter in secret:
            if letter in guesses:
                print (letter,end=' ')
            else:
                print ('_',end=' ')
                missed += 1
                
    if missed == 0:
        print ('\nТы выйграл!')
        break 
    
    guess = input('\nНазовите букву: ')
    guesses += guess
    
    if guess not in secret:
        turns -= 1
        print ('\Не угадал.')
        print ('\n', 'Осталось попыток:', turns)
        if turns < 5: print ('\n  |  ')
        if turns < 4: print ('  O  ')
        if turns < 3: print (' /|\ ')
        if turns < 2: print ('  |  ')
        if turns < 1: print (' / \ ')
        if turns < 0: print ('\n\nЭто слово: ', secret)
        
ans = 'да'
while ans == 'да':
     handman()
     print('Хочешь сыграть снова? (да или нет')
     ans = input()

в терминале: 'break' outside loop

Ответы

▲ 2

break должен быть только в циклах!

for i in range(10):
    if i % 2 == 0:
        break

Или

while True:
   break
▲ 0

Break используется только в циклах. Почитай больше про работу циклов и условных операторов. Скорее всего в данном случае эту часть кода

    if missed == 0:
        print ('\nТы выйграл!')
        break 

нужно внести в тело цикла while. Но тогда получается бесконечный цикл, потому что в теле цикла не изменяется переменная turns, которая им управляет

▲ 0

В вашем коде в части

if missed == 0:
    print ('\nТы выйграл!')
    break 

вы хотели командой break, наверно, окончить текущую игру, т.е.

  • прекратить выполнение функции handman().

Для этого предназначена другая команда - return:

if missed == 0:
    print ('\nТы выйграл!')
    return

(Команда break прекращает цикл, в котором она находится, а в вашем случае она не находиться внутри никакого цикла, потому возникла ошибка.)