Um loop com uma condição. Instrução while
Estudando o loop for , dissemos que se o número de repetições de qualquer ação for conhecido, você pode encurtar o programa usando o operador de loop for . Mas e se o número de repetições for desconhecido? E isso acontece com bastante frequência.
Exemplo
Lembrando da tradução de um número de um sistema de numeração decimal para qualquer outro, precisamos dividir o número (e depois o resultado da divisão) pela base do sistema de numeração até obtermos zero na resposta. Quantas vezes vamos compartilhar é desconhecido. E existem muitos programas que implementam esse algoritmo.
Como podemos implementar o algoritmo se não sabemos o número exato de iterações?
Para tais casos na programação, há uma instrução de loop com uma condição.
Na linguagem de programação Python, uma instrução de loop condicional começa com a palavra while e tem a seguinte estrutura.
enquanto <condição>:
corpo de loop
Como já sabemos:
- uma condição é uma expressão cujo resultado pode ser verdadeiro ou falso (como em uma declaração condicional);
- o corpo do loop são os comandos que precisam ser repetidos, eles são recuados.
Como funciona o operador?
1. Primeiro, o programa avalia a condição entre colchetes após a palavra while . Se a condição for atendida (true), então o programa executa a(s) instrução(ões) contida(s) no corpo do loop.
2. Após a conclusão da execução do corpo do loop, o programa retorna para verificar a condição e verifica novamente.
3. Essas ações (verificar a condição - executar o corpo do loop) são repetidas até que a condição se torne falsa.
4. Se a condição não for atendida imediatamente (falso) durante a primeira execução desta instrução, o programa nunca executará o corpo do loop.
Analisando o trabalho desse operador, deve ficar claro que o corpo do loop deve conter um operador que afete a condição.
Por exemplo, em um loop, o valor de uma variável usada em uma condição pode ser incrementado.
Um exemplo de programa que chamaremos de "Contagem silenciosa".
Vamos fazer o programa contar em vez de nós, por exemplo, até 10.
O programa deve gerar as frases "Iniciar " e "Concluir ", e entre essas ações exibir os números que estão sendo calculados.
Por exemplo, assim:
Iniciar
1 2 3 4 5 6 7 8 9 10
Concluir
Um programa usando um loop while ficaria assim:
print("Iniciar")
eu = 1
enquanto i <= 10:
print(i, end=" ")
i += 1 # operador que afeta a mudança de uma variável,
# estando na condição
print() # move o cursor para uma nova linha
print("Concluir")
Neste programa, atribuímos um valor à variável i = 1 - o ponto de partida.
Além disso, desde que tenhamos o valor da variável i não maior (ou seja, menor ou igual a) o valor que precisamos, nós:
1. exibir o valor da variável i ;
2. aumente o valor da variável i em 1 - este operador afeta o valor da condição entre colchetes. A variável i é incrementada, significando que em algum momento a condição i <= 10 se tornará falsa. Isso acontecerá quando i for igual a 11. Nesse caso, o corpo do loop não será mais executado e o programa executará a próxima instrução após o loop, ou seja, print() e print("Concluir") .
|
Tarefa
Você deve inserir um número (que seja menor que 3.000.000) e determinar o número de dígitos nele.
Ideia de solução
Precisamos apenas cortar sequencialmente o último dígito do número (isso pode ser feito reduzindo o número em 10 vezes, usando divisão inteira por 10), e a cada vez precisamos aumentar o contador.
Como resultado, após cortarmos todos os dígitos do número, obteremos o número deles no contador.
Este algoritmo pode ser formulado da seguinte forma:
Até que o número seja zero, diminua-o em 10 e aumente o contador em 1 a cada vez.
número (n) |
contador |
123 |
0 |
12 |
1 |
1 |
2 |
0 |
3 |
O programa ficará assim.
n = int(entrada())
contagem = 0
enquanto n != 0:
contagem += 1
n = n // 10
print("Número -", n, "contém", contagem, "dígitos")
Você precisa saber este programa de cor, porque. com base nisso, muitas outras tarefas relacionadas ao processamento de dígitos de um número são resolvidas.
|
Tarefa
A entrada do programa é o fluxo de dados — uma sequência de inteiros que termina em zero (o zero não está incluído na sequência). Você precisa encontrar a soma dos elementos dessa sequência.
Algoritmo de resolução
soma=0
input x // insira o primeiro numero
while x != 0 // o sinal final de entrada é definido na condição,
nc // isto é, até você digitar zero
sum = sum + x // você pode fazer algo com o número original.
// Você pode adicionar uma verificação numérica para alguma condição, etc.
input x // insira o próximo número
kts
imprime soma //saída do resultado
|