Condições e ciclos
Comparações, decisões, for, while, acumuladores, limites e terminação.
Condições e ramos
==,!=,<,<=,>e>=comparam valores.0 <= nota <= 20inclui os extremos.iscompara identidade de objetos.- A precedência é
not,and,or.andeorfazem curto-circuito:d != 0 and 10 / d > 2não divide quandodé zero. False,None, zero e coleções vazias contam como falso.andeordevolvem um dos operandos:"" or "sem nome"dá"sem nome".if/elif/elseexecuta apenas o primeiro ramo verdadeiro. Testa condições mais restritas primeiro:nota >= 15antes denota >= 10. Doisifindependentes podem executar ambos.- Os dois pontos e a indentação delimitam os corpos.
For, range e acumuladores
forpercorre um iterável.range(inicio, fim, passo)excluifim; o passo não pode ser zero.range(1, 5)fornece 1, 2, 3, 4;range(5, 0, -2)fornece 5, 3, 1. Uma direção incompatível produz um percurso vazio.
soma = 0
for k in range(1, 5):
soma += k * k
print(soma) # 30
Depois de cada k, a soma contém os quadrados de 1 até k. Este invariante explica o resultado. A soma vazia começa em 0; um produto começa normalmente em 1.
While e terminação
while testa antes de cada iteração e pode executar zero vezes. Identifica uma medida que avança para a paragem.
n = int(input())
soma = 0
while n > 0:
soma += n % 10
n //= 10
print(soma)Executa o código para ver a saída e os gráficos.
- O contrato exige um inteiro não negativo. Soma
14: os dígitos são 3, 8, 0 e 3; os prefixos visitados são 3083, 308, 30, 3 e 0. - A paragem depende do prefixo zero, não de um dígito zero.
- A divisão inteira reduz todo
n > 0; sem essa atualização, o ciclo não termina. - A entrada zero dá soma zero.
Dígitos e representação
Para inverter um inteiro não negativo:
- Retira
n % 10e acrescenta-o comresultado = resultado * 10 + digito. - Atualiza
n //= 10, começando o resultado em zero. 1204dá4021, mas1200dá21: um inteiro não conserva zeros à esquerda.
Para converter um inteiro não negativo para base inteira b >= 2:
- As divisões por
bdão os dígitos do menos significativo para o mais significativo. - Inverte essa ordem para apresentar o resultado.
- Trata zero explicitamente se estiveres a construir texto.
Interrupções e percursos
- Uma sentinela marca o fim dos dados. Testa-a antes de processar o valor e lê a entrada seguinte em cada iteração.
breaksai do ciclo mais interno;continuesalta para a próxima iteração. Numwhile, não saltes a atualização necessária.- O
elsede um ciclo corre quando o percurso acaba normalmente, sembreak, incluindo um percurso vazio. Sair porreturnou exceção também o salta. - Percorre valores diretamente; usa
enumeratepara índice e valor. Ciclos aninhados com 2 linhas e 3 colunas visitam 6 pares.