sábado, 30 de outubro de 2010

Problema 4.9

Uma resposta simples a esta pergunta consiste em ir gerando os números entre ind e sup, testando se são ímpares e imprimir os que forem. Ou seja, o que temos a fazer é repetir as duas operações seguintes:

- gerar próximo candidato
- se for ímpar, imprime

Duas versões possíveis de solução:

def impar_3(inf, sup):
"""Imprime os números impares entre inf e sup."""
while inf <= sup:
if (inf % 2) != 0:
print inf
inf = inf + 1

def impar_4(inf, sup):
"""Imprime os números impares entre inf e sup."""
for i in range(inf,sup+1):
if (i % 2) != 0:
print i


Como se nota, num casio usamos um ciclo while e no outro um ciclo for. Mas podemos ter ainda uma outra alternativa. Neste caso usamos o range para gerar os ímpares. Só temos que garantir que o começo é o primeiro ímpar maior ou igual a inf.

def impar_2(inf,sup):
"""Imprime os números impares entre inf e sup."""
inf = (inf - 1) % 2 + inf
for i in range(inf,sup + 1, 2):
print i


Reparar que no caso em que usamos o ciclo for o range vai até sup+1. Porquê?

Sem comentários:

Enviar um comentário