domingo, 18 de outubro de 2009

Problema 3.9

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