1.
def
divisores(n):
2.
"""
3.
Mostra divisores de um número.
4.
"""
5.
for
i
in
range(
1
,n
+
1
):
6.
if
(n
%
i)
=
=
0
:
7.
print
i
O ciclo for (início na linha 5) vai gerando em sequência os candidatos a divisores. Na linha 6 a instrução condicional if testa e filtra os que são divisores.
Porque é que, na linha 5 range tem como argumentos 1 e n+1? Bom, a resposta é: porque serão gerados números de 1 a n, devido ao modo como range funciona. Mas não é a melhor solução! Melhor seria usar range(1,n/2). Porquê? Na linha 6, temos o início da instrução condicional mais simples de todas com a sintaxe:
1.
if
[condição]:
2.
[bloco]
Podem também existir condicionais de duas vias, como em:
1.
if
[condição]:
2.
[bloco_sim]
3.
else
:
4.
[bloco_não]
ou mesmo de múltiplas vias:
1.
if
[condição_1]:
2.
[bloco_1]
3.
elif
[condição_2]:
4.
[bloco]_2
5.
...
6.
else
:
7.
[bloco_n]
A semântica desta última construção é a seguinte: percorremos de cima para baixo as condições, e executamos o código da primeira cujo resultado for True. Não havendo nenhuma condição verdadeira executa o bloco associado ao else.
boa noite, sou o rodrigo santos...
ResponderEliminarcontinuei sem perceber a melhor opçao((1,n/2))
cumprimentos
É fácil. Pense num número. 10 por exemplo. Acha que vale a pena tentar divisores acima de 5? Claro que não! Não podem existir divisores maiores do que metade do número. Daí só testar os números até n/2.
ResponderEliminarMuito bom, agora entendi.
ResponderEliminar