– While e Criando um Loop infinito – Estrutura While
Neste módulo vamos falar do WHILE. Ele, assim como o FOR, também é uma estrutura de repetição. A diferença é que o WHILE será executado ENQUANTO algo for verdade. Ou seja, não é definido o tamanho previamente Por exemplo, “Executar enquanto i<5” ou “Executar enquanto venda <10000”.
while condição:
Ação que deverá ser feita
Só será executado quando a condição não for mais atendida
Vamos considerar uma lista de compras. Usaremos o WHILE para inserir produtos na lista até um dado momento onde não há mais produtos a serem inseridos. Ou seja, podemos colocar 1 produto na lista ou 200. O programa só será interrompido quando ordenarmos para que isso seja feito.
venda = input('Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vazia')
vendas = []
#crie aqui o programa
while venda != '':
vendas.append(venda)
venda = input('Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vazia')
print('Registro Finalizado. As vendas cadastradas foram: {}'.format(vendas))
______________________________
Podemos inserir produtos eternamente nesta lista. Enquanto a condição != de ‘ ‘ for TRUE(VERDADE) sempre aparecerá um inputbox para que o usuário possa inserir o próximo produto. Vamos ver no próximo slide o que acontece quando o usuário preenche ‘ ‘(VAZIO) na caixa de entrada.
venda = input('Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vazia')
vendas = []
#crie aqui o programa
while venda != '':
vendas.append(venda)
venda = input('Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vazia')
print('Registro Finalizado. As vendas cadastradas foram: {}'.format(vendas))
______________________________
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vaziaarroz
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vaziafeijao
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vaziamacarrao
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vaziavagem
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vaziacenoura
Registre um produto. Para cancelar o registro de um novo produto, basta apertar enter com a caixa vazia
Registro Finalizado. As vendas cadastradas foram: ['arroz', 'feijao', 'macarrao', 'vagem', 'cenoura', 'frango']
Perceba que ao usarmos ‘ ‘ na caixa de entrada, recebemos a informação ‘Registro Finalizado’, assim como a lista de itens inseridos anteriormente.
– Loop infinito no While
Se você se lembra bem, falamos que o While rodará eternamente até a condição ser atendida. E se ela não for? O que acontece? Entramos no que chamamos de LOOP INFINITO. Qual o problema deste loop? Como ele rodará eternamente, 2 cenários são possíveis:
1) Seu PC irá travar;
2) Seu código não chegará ao fim e você não poderá continuar seu trabalho. Vamos entender primeiro o que é e depois como resolver. Vamos para o exemplo.
vendas = [941, 852, 783, 714, 697, 686, 685, 670, 631, 453, 386, 371, 294, 269, 259, 218, 208, 163, 125, 102, 87, 47, 7]
vendedores = ['Maria', 'José', 'Antônio', 'João', 'Francisco', 'Ana', 'Luiz', 'Paulo', 'Carlos', 'Manoel', 'Pedro', 'Francisca', 'Marcos', 'Raimundo', 'Sebastião', 'Antônia', 'Marcelo', 'Jorge', 'Márcia', 'Geraldo', 'Adriana', 'Sandra', 'Luis']
meta = 50
i = 0
while vendas[i] > meta:
print('{} bateu a meta. Vendas: {}'.format(vendedores[i], vendas[i]))
Olhando a condição do while temos que nosso loop será pausado quando a venda for < que a meta. Ok! Parece razoável... No entanto, quando olhamos o código dentro da indentação não temos nada que aumente o valor de i. Logo, i sempre será 0 (ZERO)! Isso fará com que vendas sempre seja 941 e consequentemente sempre maior que a meta que é 50. Estamos em um LOOP INFINITO...
Veja ao lado o que acontece ao rodar o programa. Perceba que temos uma repetição da linha “Maria bateu a meta. Vendas:941”. Outro ponto é que temos o asterisco ao lado da célula sinalizando que o Jupyter continua a processar a informação.
while vendas[i] > meta:
print('{} bateu a meta. Vendas: {}'.format(vendedores[i], vendas[i]))
______________________
Maria bateu a meta. Vendas: 941
Maria bateu a meta. Vendas: 941
Maria bateu a meta. Vendas: 941
Maria bateu a meta. Vendas: 941
Maria bateu a meta. Vendas: 941
...
Como Solucionar? Quando entramos em um Looping Infinito não devemos nos desesperar. Isso irá acontecer mais vezes do que você gostaria infelizmente ☺ Faz parte.
Existem 2 formas para resolver o problema:
1) Pausar (BOTÃO DE STOP) o Jupyter Notebook e corrigir o erro.
2) Pausar o Jupyter via Prompt de comando.
No Prompt de comando use CTRL + C e retorne para seu navegador
Nenhum comentário:
Postar um comentário