O problema pede-nos para lançar dois dados numerados de 1 a 6, um certo número de vezes, reportando a percentagem de ocorrência de somas pares. Espero que se comece a perceber que há neste problema uma padrão simples: executar uma acção um certo número de vezes, número esse fixo, filtrar uma ocorrência (somas pares) e contar. Daí o programa:
01.
import
random
02.
03.
def
lanca_dados(numero):
04.
"""
05.
Lança dois dados um numero de vezes. Determina
06.
a percentagem de somas pares.
07.
"""
08.
conta
=
0
09.
for
i
in
range(numero):
10.
primo
=
random.randint(
1
,
6
)
11.
secundo
=
random.randint(
1
,
6
)
12.
if
((primo
+
secundo)
%
2
)
=
=
0
:
13.
conta
=
conta
+
1
14.
return
float(conta)
/
numero
Notar como foi feito o teste de número par: um número é par se o resto da sua divisão por 2 for 0.
Suponhamos agora que quero contar e mostrar. Preciso de um novo acumulador para guardar os resultados parciais que vão sendo gerados. É para isso que servem as listas!
01.
import
random
02.
03.
def
lanca_dados(numero):
04.
"""
05.
lança dois dados um numero de vezes. guarda resultados e determina
06.
a percentagem de somas pares.
07.
"""
08.
resultados
=
list()
09.
conta
=
0
10.
for
i
in
range(numero):
11.
primo
=
random.randint(
1
,
6
)
12.
secundo
=
random.randint(
1
,
6
)
13.
resultados.append([primo,secundo])
14.
if
((primo
+
secundo)
%
2
)
=
=
0
:
15.
conta
=
conta
+
1
16.
return
float(conta)
/
numero, resultados
A inicialização da lista é feita usando o construtor da lista list(). Podia-se ter feito resultados = []. É devolvido um tuplo com o par (percentagem, lista_resultados).
Sem comentários:
Enviar um comentário