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:
import random
def lanca_dados(numero):
"""
Lança dois dados um numero de vezes. Determina
a percentagem de somas pares.
"""
conta = 0
for i in range(numero):
primo = random.randint(1,6)
secundo = random.randint(1,6)
if ((primo + secundo) % 2) == 0:
conta = conta + 1
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!
import random
def lanca_dados(numero):
"""
lança dois dados um numero de vezes. guarda resultados e determina
a percentagem de somas pares.
"""
resultados = list()
conta = 0
for i in range(numero):
primo = random.randint(1,6)
secundo = random.randint(1,6)
resultados.append([primo,secundo])
if ((primo + secundo) % 2) == 0:
conta = conta + 1
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