Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Python - Problema na condição if/elif/else

Olá pessoal! Estou escrevendo um programa para uma loja de açaí, onde o usuário consegue fazer o pedido através de um app. Porém estou tendo um probleminha em um dos blocos que ainda não consegui resolver por conta própria, Triste!!.

Nesse bloco, aparece um 'input' perguntando ao usuário se ele quer recheio em seu açaí, caso a respostar seja 'sim', apareceram as opções equivalente ao tipo de recheio, daí o usuário escolherá o recheio que será armazenado em uma lista e será mostrada cada vez que o usuário optar em acrescentar outro recheio, para que ele saiba o que selecionou até o momento.

Vamos logo ao ponto né?! O problema é que eu não consigo parar o programa quando a resposta do usuário for 'não', o programa fica num looping infinito até que o meu contador chegue ao limite máximo que são 8 repetições.

Segue abaixo o código:
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

if (recheioContinua == 'sim'):
    while (contador <= 8):
        contador = contador + 1
        print(
            '____________________________________________________________________________________________________________')
        print('            ⫷ RECHEIO ⫸')
        print('             ↓ ↓ ↓ ↓ ↓ ↓')

        print('     -RECHEIOS SEM CUSTO ADICIONAL-')
        print('             ↓ ↓ ↓ ↓ ↓ ↓')

        print(
            '             1 -Confete\n             2- Chocobal\n             3- Granulado\n             4- Leite Em Pó\n             5- Paçoca\n             6- Sucrilhos\n             7- Amendoim\n             8- Jujuba')
        oprecheio = int(input('⦁ ESCOLHA A OPÇÃO REFERENTE AOS RECHEIOS:'))
        recheioContinua2 = input('DESEJA ACRESCENTAR OUTRO RECHEIO ?:')
        if (recheioContinua2 == 'sim'):

            if (oprecheio == 1):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(0, 'Confete')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 2):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(1, 'Chocoball')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 3):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(2, 'Granulado')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 4):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(3, 'Leite em pó')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 5):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(4, 'Paçoca')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 6):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(5, 'Sucrilhos')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 7):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(6, 'Amendoim')
                print(f'***Recheios selecionados:{recheio}')
            elif (oprecheio == 8):
                print(
                    '____________________________________________________________________________________________________________')
                recheio.insert(7, 'Jujuba')
                print(f'***Recheios selecionados:{recheio}')

Dês de já agradeço muitíssimo. o/

2 respostas
solução!

Olá Leonardo, tudo bem com você?

Peço desculpas pela demora no retorno.

Para interrompermos a execução de um laço de repetição while usaremos a cláusula 'break'. Deixo abaixo uma proposta de implementação, ela foi criada com base no código enviado.

  • Adicione a cláusula break ao final do laço de repetição while (contador < 8): após a verificação da escolha do usuário ele irá perguntar se deseja adicionar novo ingrediente, caso o usuário informe que não, o laço while (contador < 8): será interrompido com o uso do break.

  • Modifique a adição da variável contador, de forma que ela seja incrementada apenas após a escolha do usuário.

Código completo com as mudanças propostas

recheio = []
contador = 0

recheioContinua = input('Deseja recheio? sim ou não ')

if (recheioContinua == 'sim'):
    while (contador < 8): 
        print('___________________________________________________________________')
        print('            ⫷ RECHEIO ⫸')
        print('             ↓ ↓ ↓ ↓ ↓ ↓')

        print('     -RECHEIOS SEM CUSTO ADICIONAL-')
        print('             ↓ ↓ ↓ ↓ ↓ ↓')

        print(
            '             1 -Confete\n             2- Chocobal\n             3- Granulado\n             4- Leite Em Pó\n             5- Paçoca\n             6- Sucrilhos\n             7- Amendoim\n             8- Jujuba')
        oprecheio = int(input('⦁ ESCOLHA A OPÇÃO REFERENTE AOS RECHEIOS:'))

        if (oprecheio == 1):
            print('_______________________________________________________________')
            recheio.insert(0, 'Confete')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  # Modificado para somar ao contador somente após a escolha
        elif (oprecheio == 2):
            print('_______________________________________________________________')
            recheio.insert(1, 'Chocoball')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 3):
            print('_______________________________________________________________')
            recheio.insert(2, 'Granulado')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 4):
            print('_______________________________________________________________')
            recheio.insert(3, 'Leite em pó')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 5):
            print('_______________________________________________________________')
            recheio.insert(4, 'Paçoca')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 6):
            print('_______________________________________________________________')
            recheio.insert(5, 'Sucrilhos')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 7):
            print('_______________________________________________________________')
            recheio.insert(6, 'Amendoim')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1  
        elif (oprecheio == 8):
            print('_______________________________________________________________')
            recheio.insert(7, 'Jujuba')
            print(f'***Recheios selecionados:{recheio}')
            contador = contador + 1

        # Bloco abaixo adicionado e mudando de local a pergunta se o usuário deseja novo recheio
        if contador < 8:
            recheioContinua2 = input('DESEJA ACRESCENTAR OUTRO RECHEIO?: ')
            if (recheioContinua2 == 'sim'):
                continue
            else:
                break

Teste do código

Início da transcrição. No GIF é apresentado o terminal integrado do Pycharm, nesse terminal está sendo executado o código apresentado anteriormente a esse GIF, é apresentado uma mensagem perguntando se o usuário deseja um novo recheio ele informa que sim, escolhe um recheio, logo após, é perguntado se o usuário deseja um novo recheio ele informa que não, o código é finalizado. Final da transcrição.

Peço que teste com as demais partes do código adicionando as modificações propostas acima.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado!!