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:
01.def impar_3(inf, sup):
02.    """Imprime os números impares entre inf e sup."""
03.    while inf <= sup:
04.         if (inf % 2) != 0:
05.              print inf
06.        inf = inf + 1
07.  
08.def impar_4(inf, sup):
09.    """Imprime os números impares entre inf e sup."""
10.    for i in range(inf,sup+1):
11.          if (i % 2) != 0:
12.             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.
1.def impar_2(inf,sup):
2.    """Imprime os números impares entre inf e sup."""
3.    inf = (inf - 1) % 2 + inf
4.    for i in range(inf,sup + 1, 2):
5.        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