You are on page 1of 6

PRÁCTICA A PRIMITIVA

A Lotería Primitiva é un xogo de azar regulado por Loterías e Apostas do Estado (LAE) que consiste en
elixir 6 números diferentes entre 1 e 49, co obxectivo de acertar a combinación gañadora no sorteo corres-
pondente.

O xogo está formado por 7 bólas, das cales 6 extráense dun bombo con 49 números (modalidade co-
munmente coñecida como 6/49) e 1 extráese doutro bombo con 10 bólas (con números que van desde 0 a
9) e correspondente co «reintegro». Tamén se extrae unha bóla extra como número complementario.

Denomínase participación á realización dunha aposta baseada en 6 números de entre os 49 posibles,


aos que se engade un sétimo número, de reintegro, que vai desde o 0 ao 9. O prezo da participación é fixo
para un sorteo determinado e foi evolucionando ao longo do tempo, sendo en xaneiro de 2010 de 1 €.
Pódense realizar apostas máis complexas, como a máis de 6 números por exemplo, pero nos no no imos ter
en conta.

No sorteo extráense os 6 números que formarán a combinación gañadora, e adicionalmente extráese


un sétimo número denominado "complementario". Despois, dun bombo aparte extráese outra bóla
correspondente ao reintegro. Existe un escalado de premios dependendo do número de acertos con
respecto ás bólas principais e a complementaria que coincidan cos 6 números de cada participación, e/o a
de reintegro. Os premios que se reparten corresponden ao 55% da recadación do sorteo máis posibles
botes de semanas anteriores cando algunha categoría quedase deserta por falta de acertantes. Existen
varias categorías de acertantes dependendo dos números que se acertan.

• Categoría Especial: Acertar os seis números da combinación gañadora e o reintegro

• 1ª Categoría: Acertar os seis números da combinación gañadora

• 2ª Categoría: Acertar cinco números da combinación e o número complementario

• 3ª Categoría: Acertar cinco números da combinación

• 4ª Categoría: Acertar catro números da combinación

• 5ª Categoría: Acertar tres números da combinación

• Reintegro: Acertar o número do reintegro

No caso de que nunha mesma categoría aparecesen varios acertantes, repartiríanse o premio a
partes iguais. En canto ao número complementario, o apostante non pode marcar ningún número
complementario, senón que ese número contarase dentro dos seis que elixa como a súa combinación, e só
no caso de que os outros cinco correspondan á combinación principal; é dicir, o complementario só
utilízase na 2ª Categoría de premios.

Imos programar agora un programa en Python que me simule sorteos da primitiva.

PROGRAMACIÓN 1º BAC
PRÁCTICA A PRIMITIVA

1. O primeiro que imos facer é importar a biblioteca random, crear unha variable co número de
sorteos, outra co prezo da aposta, e dúas listas unha cos números do sorteo e outra cos do
reintegro.
import random

numero_sorteos=100000

precio_aposta=1 # O precio de cada aposta é de 1 €

premios_medios={'3':8,'4':67,'5':2228, '5+1':43182,'6':e1727262,'R':1}

lista_numeros=list(range(1,50)) #Creo a lista cos números do sorteo

lista_reintegro=list(range(10)) #Creo unha lista cos números do reintegro

2. Deseñar unha función denominada cambia_numero_sorteos(novo_numero), que cambie a


variable global, numero de sorteos. Como é unha variable global, debemos usr a palabra clave
global para modifivcal.
def cambia_numero_sorteos(novo_numero):

''' Método que cambia a variable do numero de sorteos'''

global numero_sorteos

numero_sorteos=novo_numero

3. Deseñar unha función denominada ´sorteo que xere unha lista aleatoria de de 8 números, 6 +
complementario + reintegro, simulando as bolas que se sacan nun sorteo.
''def sorteo():

' Método que escolle 8 números (6 + complementario + Reintegro) nun sorteo Devolve lista con 8
números [1, 31, 29, 43, 15, 40, 34, 2]'''

4. Deseñar unha función denominada combinación que simule a nosa aposta. Crea unha lista
aleatoria de 7 números. Son os 6 do sorteo e o sétimo o reintegro.
def saca_combinacion():

''' Método que escolle unha combinación ao azar de 7 números(6 + reintegro)


da forma[24, 43, 33, 27, 19, 46, 3]'''

5. Deseñar unha función denominada comproba_numeros(numeros_xogados,numeros_sorteo), que


reciba como parámetros a lista de números xogados e a lista dos números do sorteo, e que devolva
os acertos que tivemos nos 6 primeiros números.
def comproba_numeros(numeros_xogados,numeros_sorteo):

''' Método que comproba cantos acertos tivemos nun sorteo [24, 43, 33, 27, 19, 46, 3] e [1, 31, 29,
43, 15, 40, 34, 2] debe devolver 1'''

PROGRAMACIÓN 1º BAC
PRÁCTICA A PRIMITIVA

6. Deseñar unha función denominada comproba_complementario(num_xogados,num_sorteo), que


reciba como parámetros a lista de números xogados e a lista dos números do sorteo, e que devolva
1 se acertamos o complementario e 0 en caso contrario.
def comproba_complemenario(numeros_xogados,numeros_sorteo):

''' Método que comproba se acertamos o complementario nun sorteo [24, 43, 33, 27, 19, 46, 3] e [1,
31, 29, 43, 15, 40, 34, 2] debe devolver 0'''

7. Deseñar unha función denominada comproba_reintegro(num_xogados,num_sorteo), que reciba


como parámetros a lista de números xogados e a lista dos números do sorteo, e que devolva 1 se
acertamos o reintegro e 0 en caso contrario.
def comproba_reintegro(numeros_xogados,numeros_sorteo):

''' Método que comproba se acertamos o complementario nun sorteo [24, 43, 33, 27, 19, 46, 3] e [1,
31, 29, 43, 15, 40, 34, 3] debe devolver 1'''

8. Deseñar unha función denominada fai_multiples_sorteos(num_xogados), que reciba como paráme-


tros a lista de números xogados, e que devolva unha lista cos resultados de cada un dos sorteos.
Cada sorteo vai a se unha lista con dous elementos. O primeiro elemento vai a ser o número de
acertos(texto), e o segundo se se acertou o reintegro ou non(texto) . Por exemplo se facemos 5 sor-
teos podería devolver :

[['0', '0'], ['1', '0'], ['0', '1'], ['2', '1'], ['4', '0'], ['5+1', '0']]

['2', '1'] -> Dous acertos e o reintegro

['5+1', '0'] -> Cinco acertos e complementario sen reintegro

def fai_multiples_sorteos(numeros_xogados):

''' Método que realiza multiples sorteos é devolve lista cos acertos . Recibe a lista de parámetros e de
volve unha lista de listas cos acertos de cada un dos sorteos. [['0', '0'], ['1', '0'], ['0', '1'], ['2', '0'], ['4',
'0'], ['5+1', '0']]'''

9. Agora imos crear a un dicionario cos posibles acertos a 0, creando unha función denominada
crea_dicionario(). Devolve o dicionario baleiro:

{'0': 0, '1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '5+1': 0, '6': 0, 'R': 0}

def crea_dicionario():

''' Método que crea un diccionario cos posibles acertos a 0'''

dic={}

for i in range(6):

dic[str(i)]=0

dic['5+1']=0

dic['6']=0

dic['R']=0

return dic

PROGRAMACIÓN 1º BAC
PRÁCTICA A PRIMITIVA

10. Deseñar unha función denominada analiza_datos(lista_sorteos), que colla unha lista cos resultados
do sorteo, e que devolva un dicionario cos resultados globais do sorteo.
def analiza_datos(lista_sorteos):

''' Método que analiza os datos de unha sorteos. Recibe unha lista cos sorteos e devolve o dicionario
cos datos'''

analiza_datos([['5+1', '0'], ['0', '0'], ['1', '1'], ['3', '0'], ['0', '0'], ['1', '1']])

{'0': 2, '1': 2, '2': 0, '3': 1, '4': 0, '5': 0, '5+1': 1, '6': 0, 'R': 2}

11. Deseñar unha función que se denomine premios_gasto(dic), que reciba como parámetro un dicio-
nario (o da función anterior)c os premios recibidos, e devolva unha tupla co diñeiro gañado e o
diñeiro gastado.
def premios_gasto(dic):

''' Método que analiza canto gastei e canto ganei.Recibe un diccionario

cos premios e devolve unha tupla con premios gastos'''

premios_gasto({'0': 429, '1': 426, '2': 131, '3': 14, '4': 0, '5': 0, '5+1': 0, '6': 0, 'R': 107})

(219 1000)

12. Deseñar un función denominada devolve_sorteos(numeros_xogados,acertos_buscados=4,inten-


tos_maximos=10000) que devolva os sorteos necesarios par alcanzar os acertos que se piden. Reci-
be como parámetros os números xogados, os acertos que queremos e un número máximo de in-
tentos de sorteo. Devolve o números de intentos se se conseguiu ou a mensaxe, “obxectivo non
conseguido se non puidemos acertar.
def devolve_sorteos(numeros_xogados,acertos_buscados=4,intentos_maximos=10000):

''' Método que analiza cantos sorteros necesito para sacar n acertos. Recibe como parámetros os nume-
ros_xogados, os acertos que queremos e un número máximo de intentos. Devolve os intentos ou a mensa-
xe obxectivo non conseguido'''

PROGRAMACIÓN 1º BAC
PRÁCTICA A PRIMITIVA

13. Imos deseñar agora a función principal(ti podes deseñar a tús).

def main():

'''Programa principal'''

numeros_xogados=saca_combinacion()

while True:

os.system('cls')

print(60*'*')

print('Para introducir numeros_sorteos introduza 1 ')

print('Para ver o número de sorteos introduza 2 ')

print('Para crear unha nova combinación introduza 3 ')

print('Para ver a combinación actual introduza 4 ')

print('Para analizar datos introduza 5 ')

print('Para realizar sorteos en busca resultado introduza 6')

print('Para ver o gañado e o invertido introduza 7')

print('Para saír introduza 8')

print(60*'*')

op=input('Introduza opción: ')

os.system('cls')

if op=='1':

novo_numero_sorteos=int(input('Introduza o número de sorteos: '))

callable(novo_numero_sorteos)

elif op=='2':

print(f'O número de sorteos actual é {numero_sorteos}')

elif op=='3':

numeros_xogados=saca_combinacion()

print(f'A nova combinación é {numeros_xogados}')

elif op=='4':

print(f'A combinación actual é {numeros_xogados}')

elif op=='5':

print()

print(analiza_datos(fai_multiples_sorteos(numeros_xogados)))

elif op=='6':

PROGRAMACIÓN 1º BAC
PRÁCTICA A PRIMITIVA

na=int(input('Introduce os acertos a buscar: '))

ns=int(input('Introduce o número máximo de sorteos: '))

print()

print('O resultado foi:', devolve_sorteos(numeros_xogados,na,ns))

elif op=='7':

re=premios_gasto(analiza_datos(fai_multiples_sorteos(numeros_xogados)))

print(f'Gastei {re[1]} € e gañei {re[0]} €')

else:

break

print()

input('Prema retorno para continuar')

PROGRAMACIÓN 1º BAC

You might also like