StopIteration возникает после выхода из цикла while

avatar
binny
8 августа 2021 в 17:30
28
0
0

Для рассматриваемого метода я пытаюсь вернуться к первому циклу while, если во вложенном цикле возникает исключение. Однако возникает ошибка StopIteration, когда она следует за оператором print("\nCannot perform suggested play..."). Что может привести к возникновению ошибки StopIteration и как я могу преодолеть это, чтобы достичь желаемого результата?

> c:\..\classes.py(143)make_play()
-> break
(Pdb) n
> c:\..\classes.py(147)make_play()
-> print("\nCannot perform suggested play...")
(Pdb) n
StopIteration
> c:\..\classes.py(147)make_play()
-> print("\nCannot perform suggested play...")
(Pdb) n
--Return--
> c:\..\classes.py(147)make_play()->None
    def make_play(self, player_hand, dealer_hand):
        while True:
            print(f'''
                     {self}               'Dealer'
                ===============       ===============
                {player_hand}         {dealer_hand}
            ''')
            while True:
                play = input(
                    "How would you like to play your hand?\n>>> "
                ).upper()
                matched_play = re.match(r'HIT|STAND|DOUBLE DOWN|SPLIT', play)
                if matched_play:
                    if play == "DOUBLE DOWN" or play == "SPLIT":
                        try:
                            self.bet()
                        except BetError as e:
                            print(f'\n{e}')
                            sleep(1)
                            cls()
                            break # break out of nested while loop
                        else:
                            pass
                    return play
            print("\nCannot perform suggested play...")
            sleep(1)
            cls() # loop back to top of method
Источник
Barmar
8 августа 2021 в 17:35
0

Как выйти из первого цикла while?

user3840170
8 августа 2021 в 17:53
0

Что такое sleep?

gimix
8 августа 2021 в 18:25
0

А что такое cls?

binny
8 августа 2021 в 20:28
0

sleep был импортирован из модуля time. cls просто очищает консоль. Я не пытаюсь вырваться из первой петли. Цель первого цикла — вернуться к первому оператору печати, если во вложенном цикле возникнет исключение. Выход из функции возможен только во вложенном цикле, если он имеет допустимое значение.

Ответы (0)