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:


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