Compare commits

..

2 Commits

Author SHA1 Message Date
b942e84458 Add docs Python Total 2023-05-14 13:18:02 +02:00
e81027cc44 Add matplotlib
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
2023-05-14 11:45:09 +02:00
111 changed files with 31815 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
# -*- coding: utf-8 -*-
"""Python TOTAL - Matplotlib.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1CqTZeTV1_gEcvQEVFOVdUh1Ibcf1HcS0
# Práctica de la librería Matplotlib
En este notebook, se desarrollarán una serie de tareas utilizando la librería Matplotlib, empleada para la visualización de datos mediante gráficos.
Se proponen y documentan posibles formas de resolver los ejercicios, pero pueden existir varias formas de lograr los mismos resultados.
Siempre es una buena idea verificar la [Documentación Oficial de Matplotlib](https://matplotlib.org/stable/index.html), donde es posible encontrar todo tipo de información referida a esta librería. Y si te quedas trabado, busca en Google "como hacer [algo] con Matplotlib". Hay enormes probabilidades de que esa pregunta ya haya sido respondida!
Por ejemplo, si quieres crear un gráfico con `plt.subplots()`, puedes buscar directamente en Google [`plt.subplots()`](https://www.google.com/search?q=plt.subplots())
"""
# Commented out IPython magic to ensure Python compatibility.
# Importamos el módulo de Matplotlib como plt
import matplotlib.pyplot as plt
# La siguiente linea nos permite ver los gráficos directamente al ejecutarlos en el notebook
# %matplotlib inline
# Creamos un gráfico utilizando plt.plot()
plt.plot()
# Graficamos una lista de números
a = [1,5,3,8,7,15]
plt.plot(a)
# Creamos dos listas, x e y. Llenamos a la lista x de valores del 1 al 100.
x = list(range(101))
# Los valores de y van a equivaler al cuadrado del respectivo valor en x con el mísmo índice
y = []
for numero in x:
y.append(numero**2)
# Graficamos ambas listas creadas
plt.plot(x,y)
"""Hay otra manera de crear gráficos en Matplotlib, utilizando el método orientado a objetos (OO)."""
# Creamos el gráfico utilizando plt.subplots()
# fig se refiere a la figurar general
# ax se refiere al eje
fig, ax = plt.subplots()
ax.plot(x, y)
"""Veamos cómo sería un flujo de trabajo en Matplotlib"""
# Commented out IPython magic to ensure Python compatibility.
# Importar y preparar la librería
import matplotlib.pyplot as plt
# %matplotlib inline
# Preparar los datos
x = list(range(101))
y = []
for numero in x:
y.append(numero**2)
# Preparamos el área del gráfico (fig) y el gráfico en sí (ax) utilizando plt.subplots()
fig, ax = plt.subplots()
# Añadimos los datos al gráfico
ax.plot(x, y)
# Personalizamos el gráfico añadiendo título al gráfico y a los ejes x e y
ax.set(title="Gráfico de casos de COVID-10 en Latam", xlabel="Días", ylabel="Casos confirmados")
# Guardamos nuestro gráfico empleando fig.savefig()
fig.savefig("/ejemplo-grafico-covif.png")
"""Veamos ahora un gráfico de dispersión:"""
#creamos un nuveo set de datos utilizando la librería Numpy
import numpy as np
x_1 = np.linspace(0, 100, 20)
y_1 = x_1**2
# Creamos el gráfico de dispersión de x vs y
fig, ax = plt.subplots()
ax.scatter(x_1, y_1)
ax.set(title="Otro gráfico más", xlabel="Días", ylabel="Aumento exponencial")
# Visualizamos ahora la función seno, utilizando np.sin(X)
fig, ax = plt.subplots()
x_2 = np.linspace(-10, 10, 100)
y_2 = np.sin(x_2)
ax.scatter(x_2, y_2)
"""Veamos ahora otro tipo de gráfico. Por ejemplo, un gráfico de barras, que por lo general asocia resultados numéricos a variables categóricas (categorías)"""
# Creemos un diccionario con tres platos y su respectivo precio
# Las claves del diccionario serán los nombres de las comidas, y los valores asociados, su precio
comidas = {"lasagna":350, "sopa":150, "roast beef":650}
# Crearemos un gráfico de barras donde el eje x está formado por las claves del diccionario,
# y el eje y contiene los valores.
fig, ax = plt.subplots()
ax.bar(comidas.keys(), comidas.values())
# Añadimos los títulos correspondientes
ax.set(title="Precios de comidas", xlabel="Comidas", ylabel="Precios")
# Probemos a continuación con un gráfico de barras horizontales
fig, ax = plt.subplots()
ax.barh(list(comidas.keys()), list(comidas.values()))
ax.set(title="Precios de comidas", xlabel="Precios", ylabel="Comidas")
"""Un gráfico semejante es un histograma. Podemos generar números aleatorios que siguen una distribución normal (que se acumulan en torno a un valor central), con la función randn:"""
# Creamos una distribución de 1000 valores aleatorios distribuidos normalmente
x = np.random.random(1000)
# Creamos el histograma
fig, ax = plt.subplots()
ax.hist(x)
"""Veamos ahora un caso más complejo, trabajando con subplots, o figuras que cotienen varios gráficos:"""
# Creamos una figura con 4 subgráficos (2 por fila)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(12,8))
"""Añadimos datos a cada uno de los gráficos (axes)"""
# Creamos la misma disposición de gráficos, con un tamaño de figura de 10x5
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10,5))
# Para nuestro primer gráfico, tomamos el conjunto x_1, y_1, y generamos un gráfico de líneas
ax1.plot(x_1, y_1)
# Para nuestro segundo gráfico, tomamos el conjunto x_2, y_2, y generamos un gráfico de dispersión
ax2.scatter(x_2,y_2)
# Creamos un gráfico con los precios de tres comidas en la esquina inferior izquierda
ax3.bar(comidas.keys(), comidas.values())
# El gráfico de la esquina inferior derecha será un histograma de valores aleatorios con distribución normal
ax4.hist(np.random.randn(1000))
"""Matplotlib tiene un conjunto de varios estilos disponibles, podemos verificarlos de la siguiente manera:"""
# Verificamos estilos disponibles
plt.style.available
# Cambiamos el estilo predeterminado por "seaborn-whitegrid"
plt.style.use('seaborn-v0_8-whitegrid')
"""Habiendo cambiado el estilo (el cambio más evidente que veremos será una grilla en el fondo de cada gráfico), cambiaremos también los colores de las líneas, puntos y barras en cada uno de los gráficos por códigos hex a nuestra preferencia:
"""
# Copiamos los valores de los gráficos anteriores
# Creamos la misma disposición de gráficos, con un tamaño de figura de 10x5
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10,5))
# Para nuestro primer gráfico, tomamos el conjunto x_1, y_1, y generamos un gráfico de líneas
ax1.plot(x_1, y_1, color="#fcba03")
# Para nuestro segundo gráfico, tomamos el conjunto x_2, y_2, y generamos un gráfico de dispersión
ax2.scatter(x_2,y_2, color="#fcba02")
# Creamos un gráfico con los precios de tres comidas en la esquina inferior izquierda
ax3.bar(comidas.keys(), comidas.values(), color="#03c6fc")
# El gráfico de la esquina inferior derecha será un histograma de valores aleatorios con distribución normal
ax4.hist(np.random.randn(1000), color="#fc036b")

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,6 @@
print("El nombre de tu cerveza\nes '" + input("Que ciudad te gustaria visitar?: ") + " " + input("Cual es tu color favorito?: ") + "'\nFelicitaciones!")

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,6 @@
nombre = input("Por favor, dime tu nombre: ")
ventas = int(input("Diga sus ventas totales del mes: "))
comision = round(ventas * 13 / 100,2)
print(f"Hola {nombre}, tus comisiones de este mes son de ${comision}")

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,41 @@
texto = input("Ingresa un texto a elección: ")
letras = []
texto = texto.lower()
letras.append(input("Ingresa la primera letra: ".lower()))
letras.append(input("Ingresa la segunda letra: ".lower()))
letras.append(input("Ingresa la tercera letra: ".lower()))
print("\n")
print("CANTIDAD DE LETRAS")
cantidad_letras1 = texto.count(letras[0])
cantidad_letras2 = texto.count(letras[1])
cantidad_letras3 = texto.count(letras[2])
print(f"Hemos encontrado la letra '{letras[0]}' repetida {cantidad_letras1} veces")
print(f"Hemos encontrado la letra '{letras[1]}' repetida {cantidad_letras2} veces")
print(f"Hemos encontrado la letra '{letras[2]}' repetida {cantidad_letras3} veces")
print("\n")
print("CANTIDAD DE PALABRAS")
palabras = texto.split()
print(f"Hemos encontrado {len(palabras)} palabras en tu texto")
print("\n")
print("LETRAS DE INICIO Y DE FIN")
letra_inicio = texto[0]
letra_final = texto[-1]
print(f"La letra inicial es '{letra_inicio}' y la letra final es '{letra_final}'")
print("\n")
print("TEXTO INVERTIDO")
palabras.reverse()
texto_invertido = ' '.join(palabras)
print(f"Si ordenamos tu texto al revés va a decir: '{texto_invertido}'")
print("\n")
print("BUSCANDO LA PALABRA PYTHON")
buscar_python = 'python' in texto
dic = {True:"", False:"no"}
print(f"La palabra 'Python' {dic[buscar_python]} se encuentra en el texto")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,23 @@
from random import randint
intentos = 0
estimado = 0
numero_secreto = randint(1,100)
nombre = input("Dime tu nombre: ")
print(f"Bueno {nombre}, he pensado un número entre 1 y 100\nTienes 8 intentos para adivinar")
while intentos < 8:
estimado = int(input("Cuál es el número?: "))
intentos += 1
if estimado < numero_secreto:
print("Mi numero es mas alto")
elif estimado > numero_secreto:
print("Mi numero es mas bajo")
else:
print(f"Felicitaciones {nombre}! Has adivinado en {intentos} intentos")
break
if estimado != numero_secreto:
print(f"Lo siento, se han agotado los intentos. El numero secreto era {numero_secreto}")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,315 @@
%PDF-1.4
%<25><><EFBFBD><EFBFBD>
1 0 obj
<</MarkInfo<</Marked true>>/Metadata 2 0 R/Pages 3 0 R/StructTreeRoot 5 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 3513/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c017 91.164464, 2020/06/15-10:20:05 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
<xmp:ModifyDate>2021-09-05T18:00:53-03:00</xmp:ModifyDate>
<xmp:CreateDate>2021-09-05T18:00:53-03:00</xmp:CreateDate>
<xmp:MetadataDate>2021-09-05T18:00:53-03:00</xmp:MetadataDate>
<xmp:CreatorTool>Canva</xmp:CreatorTool>
<dc:format>application/pdf</dc:format>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">[S5] Python TOTAL Cheat Sheets</rdf:li>
</rdf:Alt>
</dc:title>
<dc:creator>
<rdf:Seq>
<rdf:li>Facundo Nicolás Colque</rdf:li>
</rdf:Seq>
</dc:creator>
<xmpMM:DocumentID>uuid:eebf06bf-3e1e-4c14-9cda-85798c1c3f38</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:e9bed3f8-450c-4369-919d-68cb1c24dbc9</xmpMM:InstanceID>
<pdf:Producer>Canva</pdf:Producer>
<pdf:Keywords>DAEpLMhmRl8,BADsJ4ZOebQ</pdf:Keywords>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[6 0 R]/MediaBox[0.0 7.91997 1620.0 1627.92]/Type/Pages>>
endobj
5 0 obj
<</IDTree 7 0 R/K 8 0 R/ParentTree 9 0 R/ParentTreeNextKey 1/Type/StructTreeRoot>>
endobj
7 0 obj
<</Names[10 0 R 8 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R]>>
endobj
8 0 obj
<</ID 10 0 R/K 12 0 R/P 5 0 R/S/Document>>
endobj
9 0 obj
<</Nums[0[36 0 R 40 0 R 52 0 R 54 0 R 54 0 R 56 0 R 56 0 R 58 0 R 60 0 R 60 0 R 64 0 R 64 0 R 76 0 R]]>>
endobj
36 0 obj
<</ID 35 0 R/K<</MCID 0/Pg 6 0 R/Type/MCR>>/P 34 0 R/S/NonStruct>>
endobj
40 0 obj
<</ID 39 0 R/K<</MCID 1/Pg 6 0 R/Type/MCR>>/P 38 0 R/S/NonStruct>>
endobj
52 0 obj
<</ID 51 0 R/K<</MCID 2/Pg 6 0 R/Type/MCR>>/P 50 0 R/S/NonStruct>>
endobj
54 0 obj
<</ID 53 0 R/K[<</MCID 3/Pg 6 0 R/Type/MCR>><</MCID 4/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>>
endobj
56 0 obj
<</ID 55 0 R/K[<</MCID 5/Pg 6 0 R/Type/MCR>><</MCID 6/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>>
endobj
58 0 obj
<</ID 57 0 R/K<</MCID 7/Pg 6 0 R/Type/MCR>>/P 50 0 R/S/NonStruct>>
endobj
60 0 obj
<</ID 59 0 R/K[<</MCID 8/Pg 6 0 R/Type/MCR>><</MCID 9/Pg 6 0 R/Type/MCR>>]/P 50 0 R/S/NonStruct>>
endobj
64 0 obj
<</ID 63 0 R/K[<</MCID 10/Pg 6 0 R/Type/MCR>><</MCID 11/Pg 6 0 R/Type/MCR>>]/P 62 0 R/S/NonStruct>>
endobj
76 0 obj
<</ID 75 0 R/K<</MCID 12/Pg 6 0 R/Type/MCR>>/P 74 0 R/S/NonStruct>>
endobj
75 0 obj
(node00036882)
endobj
74 0 obj
<</ID 73 0 R/K 76 0 R/P 72 0 R/S/P>>
endobj
73 0 obj
(node00036881)
endobj
72 0 obj
<</ID 71 0 R/K 74 0 R/P 70 0 R/S/Div>>
endobj
71 0 obj
(node00036880)
endobj
70 0 obj
<</ID 69 0 R/K 72 0 R/P 68 0 R/S/Div>>
endobj
69 0 obj
(node00036878)
endobj
68 0 obj
<</ID 67 0 R/K 70 0 R/P 66 0 R/S/Div>>
endobj
67 0 obj
(node00036877)
endobj
66 0 obj
<</ID 65 0 R/K 68 0 R/P 24 0 R/S/Div>>
endobj
65 0 obj
(node00036876)
endobj
24 0 obj
<</ID 23 0 R/K[26 0 R 42 0 R 66 0 R]/P 22 0 R/S/Div>>
endobj
23 0 obj
(node00036834)
endobj
22 0 obj
<</ID 21 0 R/K 24 0 R/P 20 0 R/S/Div>>
endobj
21 0 obj
(node00036833)
endobj
20 0 obj
<</ID 19 0 R/K 22 0 R/P 18 0 R/S/Div>>
endobj
19 0 obj
(node00036832)
endobj
18 0 obj
<</ID 17 0 R/K 20 0 R/P 16 0 R/S/Div>>
endobj
17 0 obj
(node00036831)
endobj
16 0 obj
<</ID 15 0 R/K 18 0 R/P 14 0 R/S/Div>>
endobj
15 0 obj
(node00036830)
endobj
14 0 obj
<</ID 13 0 R/K 16 0 R/P 12 0 R/S/Div>>
endobj
13 0 obj
(node00036745)
endobj
12 0 obj
<</ID 11 0 R/K 14 0 R/P 8 0 R/S/Div>>
endobj
11 0 obj
(node00036743)
endobj
26 0 obj
<</ID 25 0 R/K 28 0 R/P 24 0 R/S/Div>>
endobj
42 0 obj
<</ID 41 0 R/K 44 0 R/P 24 0 R/S/Div>>
endobj
41 0 obj
(node00036861)
endobj
44 0 obj
<</ID 43 0 R/K 46 0 R/P 42 0 R/S/Div>>
endobj
43 0 obj
(node00036862)
endobj
46 0 obj
<</ID 45 0 R/K 48 0 R/P 44 0 R/S/Div>>
endobj
45 0 obj
(node00036863)
endobj
48 0 obj
<</ID 47 0 R/K[50 0 R 62 0 R]/P 46 0 R/S/Div>>
endobj
47 0 obj
(node00036865)
endobj
50 0 obj
<</ID 49 0 R/K[52 0 R 54 0 R 56 0 R 58 0 R 60 0 R]/P 48 0 R/S/P>>
endobj
62 0 obj
<</ID 61 0 R/K 64 0 R/P 48 0 R/S/P>>
endobj
61 0 obj
(node00036874)
endobj
49 0 obj
(node00036866)
endobj
25 0 obj
(node00036847)
endobj
28 0 obj
<</ID 27 0 R/K 30 0 R/P 26 0 R/S/Div>>
endobj
27 0 obj
(node00036848)
endobj
30 0 obj
<</ID 29 0 R/K 32 0 R/P 28 0 R/S/Div>>
endobj
29 0 obj
(node00036849)
endobj
32 0 obj
<</ID 31 0 R/K[34 0 R 38 0 R]/P 30 0 R/S/Div>>
endobj
31 0 obj
(node00036851)
endobj
34 0 obj
<</ID 33 0 R/K 36 0 R/P 32 0 R/S/P>>
endobj
38 0 obj
<</ID 37 0 R/K 40 0 R/P 32 0 R/S/P>>
endobj
37 0 obj
(node00036854)
endobj
33 0 obj
(node00036852)
endobj
6 0 obj
<</BleedBox[0.0 7.91997 1620.0 1627.9199]/Contents 77 0 R/MediaBox[0.0 7.91997 1620.0 1627.9199]/Parent 3 0 R/Resources<</ExtGState<</G3 78 0 R>>/Font<</F10 79 0 R/F11 80 0 R/F6 81 0 R/F8 82 0 R>>/Pattern<</P14 83 0 R/P15 84 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/StructParents 0/TrimBox[0.0 7.91997 1620.0 1627.9199]/Type/Page>>
endobj
77 0 obj
<</Filter/FlateDecode/Length 2502>>stream
x<EFBFBD><EFBFBD>Z<EFBFBD>n$<24>}<7D><><EFBFBD><EFBFBD>K<><4B>"<22>X@IFر<><<07>/0<> d<><64><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>k<EFBFBD>5v$<01><><EFBFBD>f]O]H<><48>.<2E><>I<EFBFBD><49><EFBFBD>꾚h<EABE9A><68>&g;=><3E><><EFBFBD>'<27><><EFBFBD>D<EFBFBD><44>
SLAヌ—<EFBFBD>?<1F><><EFBFBD><EFBFBD> <0B>r<EFBFBD>o2<6F><32><EFBFBD>C}<7D><><EFBFBD>|<7C>Ŀ<EFBFBD><C4BF>n<EFBFBD>_=<3D>|<7C><>_<EFBFBD><5F><EFBFBD>5<EFBFBD>?<3F><><01><>~į$:<3A><>r<EFBFBD>%<25><>4E7)oB<6F>T<EFBFBD><08><>5<EFBFBD><35>HP'<27><>U<EFBFBD><55>&<26><>
0<EFBFBD>M<EFBFBD>%<15>Ϧ<EFBFBD>U<EFBFBD><55><EFBFBD>E3|s>i<>'<27>MPA<50>8}ȚTr.<2E><>7?<3F><><EFBFBD>?~<7E><>e:<3A><>^><><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>o<EFBFBD>_<05><><EFBFBD>F<EFBFBD><46><14>W<EFBFBD>8n<38>{<7B>ӊb<D38A><62><EFBFBD><08><>v
<EFBFBD>)<02>K^<5E>v<EFBFBD><76><14><>M<EFBFBD><4D>!<05>܊<> <0C><><31>Q<EFBFBD><51><EFBFBD>a-%<25>t֡[KZ<4B><5A><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><61><16><><15><> <09>3L<33>i<EFBFBD><69><58><DDA8>waz<61>hQ[M<>XF<58>F<EFBFBD>)<1A>a<<3C><><EFBFBD><EFBFBD>h<EFBFBD>d<EFBFBD><64>Q_ <09>gC5<19>lЛ<>nṟ<72>y <0B>$<24>"<22>Λ<EFBFBD>3f<33><66>Y˞J<CB9E><1F><><EFBFBD><13><>-<2D>h<><68><10><><EFBFBD><16>:<3A>a_<61>
<EFBFBD> <0B><>kX<>XG<06><>Y<EFBFBD><59>8d <0B><>b8 <0B><> $<24><><EFBFBD>l<>/<2F><><1F>fR<66><52><EFBFBD>
&F<18><>1<1D>e<EFBFBD><65>Fe<46><65>\8lRkx<01><>M<EFBFBD><4D>~CB<43><42>3<>C<><C582><14><><EFBFBD>sGMڨ<4D>-c3g<33>!)<29><><EFBFBD><EFBFBD>šd<C29A><64>䋩Y<E48BA9> -)<29>8B)e"<22><><15><><07>y<EFBFBD><79>s[ <0B>x2<78>Y<EFBFBD> <20><>Np7<70>bNhM<68><4D>CG<43>Q<0F><>
9<EFBFBD><EFBFBD><EFBFBD>"4<>ð<EFBFBD><C3B0>eNʦJ<CAA6><4A><EFBFBD>j\<5C>"y<>Ca<43><61>nTbC<62><43>*RX<52>ה<EFBFBD>E<EFBFBD><45>V<EFBFBD>_y<5F><00>ڜF<DA9C><46>(<16>Ҩ<07><>a@QD<51>8.!+<2B><><EFBFBD><EFBFBD>8<EFBFBD>rS<>2<EFBFBD><32>b<><62><04><>;,j#1<><31><EFBFBD>9A<39>ڒ><3E><><EFBFBD><EFBFBD><EFBFBD>
V<><56>l<EFBFBD><6C>pS<70>z<EFBFBD>T|S<>yM<79><19>3-<2D><>V<EFBFBD><56><EFBFBD><EFBFBD>۴̒<>[<5B><><EFBFBD>֥<EFBFBD><D6A5><EFBFBD><EFBFBD> <0B><>d <09><>X<Vq<56>nQp<1D>̡M<CCA1>:<3A>W߁<>\<5C><><EFBFBD>\<5C>PH<50><48><EFBFBD><<3C>#<23>g<EFBFBD>O<EFBFBD><4F><EFBFBD>k<EFBFBD>"<22>W5JD<4A>tAsb<73>!h<>t<EFBFBD><74><EFBFBD>[iX]<5D>*<2A>ۓ<EFBFBD>=<3D><18>tj<74>3|<7C><>?<3F><><EFBFBD><19>@<40><>T<EFBFBD>RD<52><61><DE89><EFBFBD><EFBFBD>)<29>UΤ<55><CEA4>h,=<01>d<00>
<EFBFBD> <20>me<6D>`-_Wi<57>d&!<21>*|<7C>`K<06><><EFBFBD>YP#pn<70>><3E><><EFBFBD><EFBFBD>u<EFBFBD>f<> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%oB]<5D> .(D_<44><5F>l<EFBFBD>~<7E><>C<EFBFBD>+bb<><62>Pc<50><63>o<>?<3F><><1E>?}<7D><>?n
4<EFBFBD><EFBFBD>j<EFBFBD><EFBFBD>~<7E>\V@<40><03>>}>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<><16><>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD>C%i<>J<EFBFBD><4A><EFBFBD>{_<><5F><EFBFBD>HZ<48>͙<EFBFBD><1F>Ӥ<EFBFBD><D3A4><EFBFBD>&w<><77>7<EFBFBD><37>`<60>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><74>٣<EFBFBD><D9A3><04>=TF<54><46>L<4C><C290>]<5D>&`<60><>:<3A>L<16>ֶ*<2A><>4T<34>S<EFBFBD><53>^I/<07><>1(<28><16>
_$<24><><EFBFBD><EFBFBD><0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><02>A %<19><><EFBFBD><EFBFBD><EFBFBD>t<>%<>>8<>#<23><><EFBFBD>a!<21><>V+^<5E><><05><> <0B>><3E>0<0F>
B}t<><74>2<EFBFBD><32>5>ߪf<DFAA><66><EFBFBD>`?<3F>ѮaD!EgB<67>D<EFBFBD>OJ=9<>׸%0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>7h<37>[P<1A>C<><43><EFBFBD><EFBFBD><EFBFBD>+<f<><66><EFBFBD><EFBFBD>Xn<58><6E>M4<4D><34>x=,<2C>yvn2r^d<><64><19>d<EFBFBD><64> <0C><><EFBFBD><EFBFBD>`0<>.wnV<05><><EFBFBD><EFBFBD><EFBFBD>/7Ȣ<37>u<EFBFBD><75>ސv<08>u<EFBFBD><75><EFBFBD><EFBFBD><64><DC9F>(H<><48>u<.u<01><>^ <0B><><10><>]<5D><><EFBFBD>V<EFBFBD><56>t ̔<><CC94><EFBFBD> *\0<>`<60>Һ ~Z<>PԹS<D4B9>y-<2D>vpi1<69>ؿ<EFBFBD><D8BF><EFBFBD>V<><56><EFBFBD><13><>W<EFBFBD><57><G<>J<49>x<EFBFBD>8<EFBFBD>#<23><><EFBFBD>8*<2A><>F:<18><><EFBFBD><EFBFBD><EFBFBD>2#<23><><EFBFBD>_ew<65><77>hG<68><47>FF<46><46>e<EFBFBD><65><1D><16>'<27>":o<><6F> <0B>l<EFBFBD><6C>s<EFBFBD><73><EFBFBD>\<5C><>0 3x<33>L<><4C><EFBFBD><EFBFBD><10>f<>Q?<3F><><EFBFBD><EFBFBD>Xy<05><0E><>:<3A><> <09>q<EFBFBD><71><EFBFBD><0F>ϗ<EFBFBD>8<EFBFBD><38>L^1yѩ=<3D>E~<7E>M[e<>$<24>V<EFBFBD>F}v<><76><1D><>W<EFBFBD><32><DEA4><EFBFBD>(.67<EFBFBD><05><>{G<>N*<2A> [a<>ƣ+'<15>l8`wo;<3B><>k<EFBFBD>Z<><5A>K<EFBFBD>hsboۜ(D.v<><76><EFBFBD>!<21><>$<24> <0B>n;<3B>n4<6E><34>X<EFBFBD>N<EFBFBD>@<40><>f5<66><35><08>n<EFBFBD>K.כ}EN{<7B><><EFBFBD>:<3A><><18><>Gl<47>tW<74><57>|<16><>p<EFBFBD><70>$<24>+ N2D<32>w<EFBFBD><77>N]Ê<><C38A><EFBFBD><EFBFBD>].<2E>n}5<><35>A<EFBFBD>N<EFBFBD>|,<2C><>q<EFBFBD><71><<3C><><1D><><17><>E1G<31>5<EFBFBD><35>cc`<60><>Z3<5A>v<>4<EFBFBD>l<EFBFBD>*<2A>cv<06><>fG<66>ˆ<><CB86>/<2F><>]<5D><1D><><EFBFBD><EFBFBD><04>)<29>Z<EFBFBD><5A>8<EFBFBD>r<EFBFBD><1B><><EFBFBD>ti<74><69>F<EFBFBD>f<EFBFBD>+<2B><>EK,<2C><><EFBFBD><EFBFBD>^<5E><>P<EFBFBD><50>N@<40>8<06><>B<EFBFBD><42>W뻙n<EBBB99>⌖c<E28C96><EFBFBD><7F>9wf{%<25><><EFBFBD>A<EFBFBD>d<EFBFBD>"<22>%<25>=<3D>0<EFBFBD><30><EFBFBD>.i%<25>h<18><><EFBFBD>w<>!<21><>Ύ<EFBFBD>t<EFBFBD><74><19><>ʑR<CA91><52>ssb<73><62><EFBFBD>9<EFBFBD><39>ny<6E>d<EFBFBD><1B><>Fd^<5E>_<EFBFBD><5F>c<EFBFBD><63><EFBFBD><EFBFBD>,<2C>6yJ<15><>X)f<>6#<23>w4!<21><>V
Ș<EFBFBD><EFBFBD><06><>A<EFBFBD>nJ<1C>h<EFBFBD>4y<34><79>C:<3A><><15>.V<>3ӹ4<D3B9>Kh<4B><68> <0C><><EFBFBD><EFBFBD>EOz<4F><7A>|<7C><>
<EFBFBD> A<>P<14>pF<><46>II'T<>]<5D>&<26><>i<><69><EFBFBD><><DEAF>r|<7C><><EFBFBD>o<EFBFBD><1A>9<EFBFBD><39><07>68L{<7B>W<>Ƿ<EFBFBD><C7B7><EFBFBD>=<3D>8<EFBFBD>HYw<59><77><EFBFBD><EFBFBD><1E>zi<7A><69>I<17><>}<7D><><71><D79E>}<7D><>_q<5F><71><EFBFBD><EFBFBD><EFBFBD>@zEx<45><13><><EFBFBD>䝬=S<>͎<EFBFBD><1E>B\E<>EI<45>&xa<78><61>kT<6B>7<EFBFBD><37>:<3A>Y<><59>*m
<EFBFBD><EFBFBD><EFBFBD>NG<>zvꫮ<76>{<7B><><07>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD>>H<><48><EFBFBD>'<27>`<60><1E><><EFBFBD>E<EFBFBD><45>y<><79><EFBFBD>x6P<36><50><EFBFBD>$R<><52>s<EFBFBD><73><06> Ig<17>ۖS<DB96><53>+42<34>$XߝZ<DF9D>+<2B>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><66>J<EFBFBD>:<3A>;I<><0E><>E<EFBFBD><45>.<2E>G<EFBFBD>t$*K<0F><11>֛ <0B><><EFBFBD>u<EFBFBD>b<EFBFBD><62>I<EFBFBD>3<EFBFBD><33> <0B><>ϯ<14><>CO<43><4F>g0<67>/<2F>j~}<7D>_:<3A>oW<6F><57>5<EFBFBD><35>7F<37><46>i={<7B><>1<EFBFBD>Yem<65>zx<7A><78><EFBFBD>8)M<><4D>%<25><>5(<28>
O<18>$6<>U<05>G}<7D>f<EFBFBD>^<5E>xX<78>P<EFBFBD><50><EFBFBD><EFBFBD>nD<>Ǘ<EFBFBD>i#<23><><EFBFBD>vS<1F><>f<EFBFBD>?<04>I<EFBFBD><49>n ͏<><CD8F><01>C<EFBFBD><43>
endstream
endobj
83 0 obj
<</Matrix[0.52402771 0 0 -0.51232868 939.72131 1846.0164]/PatternType 2/Shading<</ColorSpace/DeviceRGB/Coords[811.53003 574.90002 665.26001 573.72998]/Extend[true true]/Function<</C0[1 0.808 0.318]/C1[1 0.808 0.318]/Domain[0 1]/FunctionType 2/N 1>>/ShadingType 2>>/Type/Pattern>>
endobj
84 0 obj
<</Matrix[0.52402771 0 0 -0.51232868 939.72131 1846.0164]/PatternType 2/Shading<</ColorSpace/DeviceRGB/Coords[862.82001 642.17999 573.28003 642.17999]/Extend[true true]/Function<</C0[1 0.808 0.318]/C1[1 0.808 0.318]/Domain[0 1]/FunctionType 2/N 1>>/ShadingType 2>>/Type/Pattern>>
endobj
79 0 obj
<</CIDToGIDMap/Identity/CharProcs<</g0 85 0 R/g1 86 0 R/g17 87 0 R/g2 88 0 R/g33 89 0 R/g3F 90 0 R/g49 91 0 R/g56 92 0 R/g88 93 0 R/g91 94 0 R/g9F 95 0 R/gA1 96 0 R/gAB 97 0 R/gB6 98 0 R/gBD 99 0 R/gCA 100 0 R/gD4 101 0 R/gE9 102 0 R>>/Encoding<</Differences[0/g0/g1/g2/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g17/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g33/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g3F/g0/g0/g0/g0/g0/g0/g0/g0/g0/g49/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g56/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g88/g0/g0/g0/g0/g0/g0/g0/g0/g91/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g9F/g0/gA1/g0/g0/g0/g0/g0/g0/g0/g0/g0/gAB/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gB6/g0/g0/g0/g0/g0/g0/gBD/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gCA/g0/g0/g0/g0/g0/g0/g0/g0/g0/gD4/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/g0/gE9]/Type/Encoding>>/FirstChar 0/FontBBox[-114 486 1714 -1588]/FontDescriptor 103 0 R/FontMatrix[0.00048828125 0 0 -0.00048828125 0 0]/LastChar 233/Subtype/Type3/ToUnicode 104 0 R/Type/Font/Widths[973 614 1482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1157 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 965 0 0 0 0 0 0 0 0 0 0 0 1804 0 0 0 0 0 0 0 0 0 1347 0 0 0 0 0 0 0 0 0 0 0 0 1093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1188 0 0 0 0 0 0 0 0 1227 0 0 0 0 0 0 0 0 0 0 0 0 0 1227 0 534 0 0 0 0 0 0 0 0 0 554 0 0 0 0 0 0 0 0 0 0 1227 0 0 0 0 0 0 1314 0 0 0 0 0 0 0 0 0 0 0 0 819 0 0 0 0 0 0 0 0 0 793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1174]>>
endobj
80 0 obj
<</CIDToGIDMap/Identity/CharProcs<</g0 105 0 R/g100 106 0 R/g101 107 0 R/g102 108 0 R/g103 109 0 R>>/Encoding<</Differences[0/g0/g100/g101/g102/g103]/Type/Encoding>>/FirstChar 0/FontBBox[84 36 1192 -1572]/FontDescriptor 103 0 R/FontMatrix[0.00048828125 0 0 -0.00048828125 0 0]/LastChar 4/Subtype/Type3/ToUnicode 110 0 R/Type/Font/Widths[973 771 1262 1256 1295]>>
endobj
81 0 obj
<</BaseFont/Rubik-Light/DescendantFonts[111 0 R]/Encoding/Identity-H/Subtype/Type0/ToUnicode 112 0 R/Type/Font>>
endobj
82 0 obj
<</BaseFont/Rubik-LightItalic/DescendantFonts[113 0 R]/Encoding/Identity-H/Subtype/Type0/ToUnicode 114 0 R/Type/Font>>
endobj
114 0 obj
<</Filter/FlateDecode/Length 358>>stream
x<EFBFBD>]<5D><>j<EFBFBD>@<14><>}<7D><>L/<2F>:q <0B><><EFBFBD><EFBFBD>]h<>0zL<7A>:<3A>h.|<7C><><EFBFBD><EFBFBD>)t@<40><>l<EFBFBD>Y<EFBFBD><59><EFBFBD>J<EFBFBD><4A><EFBFBD>~<7E>C}<7D>Y<EFBFBD><59>j4M<34>]<5D>$<24>t<EFBFBD><74><EFBFBD>J<EFBFBD>t<EFBFBD><74><11><><EFBFBD>-<2D>_<>i<EFBFBD><69>T<EFBFBD><10><><EFBFBD>N<EFBFBD>^<5E><><EFBFBD> Wz<57><7A><57><DD90>M<EFBFBD><><D38B>}<1C><>'5 <0B>J<12>Pk2=W<><4B>9l_6<5F><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y|,# <09><>BM=44<34>UM<55>R7<52>bǼDąy<C485>E<EFBFBD><45>gw#<23>]<5D><><EFBFBD><EFBFBD><EFBFBD>~0<><30>#<23><><EFBFBD>c<EFBFBD>\<5C>H2<1B>3}<7D><<3C><11>3<EFBFBD>RБ霁R<E99C81><52> *@<40>,LY<4C>BK<42><4B>`<60><10><>'<10><15> <20> <0C><><EFBFBD>"<22><><EFBFBD><EFBFBD>E<EFBFBD><<3C>m
<EFBFBD><EFBFBD>L3<>P:*<2A>UB+<2B>O1<4F> <20>H4<48>mzx6n<36>U<EFBFBD>Y܎<><DC8E>q<EFBFBD>C<EFBFBD><43>6<05><>nj<6E><6A><EFBFBD><19>w<EFBFBD><77><05><><EFBFBD><EFBFBD>ץw<D7A5><1E>9<0E><1A>~?<3F><15>E
endstream
endobj
113 0 obj
<</BaseFont/Rubik-LightItalic/CIDSystemInfo<</Ordering(Identity)/Registry(Adobe)/Supplement 0>>/CIDToGIDMap/Identity/DW 0/FontDescriptor 115 0 R/Subtype/CIDFontType2/Type/Font/W[0[290 0 0 264 653]130 131 569 142[580 535]149[579 0 0 0 544]172[224]189[225]195[879 590]203 204 556 215[579 0 580 350 0 0 0 492]230[351 0 0 0 586]245[533]252[534]509[614 394]584[237]589[234]603 604 317]>>
endobj
115 0 obj
<</Ascent 935/CapHeight 700/Descent -250/Flags 68/FontBBox[-482 -264 1088 896]/FontFile2 116 0 R/FontName/Rubik-LightItalic/ItalicAngle -12/StemV 219/Type/FontDescriptor>>
endobj
116 0 obj
<</Filter/FlateDecode/Length 5474/Length1 13832>>stream
x<EFBFBD><EFBFBD>;Yp[<5B>u<EFBFBD><75><05><03>b<EFBFBD><02>z<EFBFBD><08>| )<29>7<><37>.<2E>HK<48>(Y<>,<2C>K<><>xUX<55>i?:<3A>d<EFBFBD>I<EFBFBD>I<EFBFBD>|d<>r<><72><19><>6<EFBFBD><36>i<EFBFBD>~<7E>q3i<33>Ԟf<D49E>8<EFBFBD><38>N<EFBFBD>x<mL<6D><4C><EFBFBD>@<40><>l<EFBFBD><6C>G<EFBFBD>ֻC<D6BB>s<EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD>{H<03>jxx<><1D><><EFBFBD>[<5B><>'T<><54> <09><><EFBFBD>N<EFBFBD><4E>UO<55><4F>`s8<73><38>ҽ<17>Dk<44>?<3F><><1C>`<60>ܩ<EFBFBD><DCA9>.<>
<00>]<5D>*<2A><><EFBFBD><EFBFBD>s8_ P<>s<EFBFBD>m<EFBFBD><EFBFBD><EEBEBC><EFBFBD>><3E><04>A<EFBFBD>z<EFBFBD><7A>J~<7E><><EFBFBD><EFBFBD><7F>8~<19><>5<EFBFBD><35>|<7C><><08>k<>/^<5E>=<3D><><EFBFBD><EFBFBD><00><>ѻ<EFBFBD>.<2E>8<><38><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>sB<73><42>$@<40><17>^><3E>?<3F><> <0C>zeZ>w<><77><EFBFBD>Ϳ<EFBFBD>><3E>(<28> <20>;<3B>r<EFBFBD><72>.<2E>2<EFBFBD>I<EFBFBD>A<>v1D<>w<EFBFBD><77>l<EFBFBD><07>R<0F><><EFBFBD><EFBFBD>džHJe<><65><EFBFBD>c<07> <20>[<5B><>lZY`<60>2<EFBFBD><32><11><>q/7p<37><70>\<5C><>O<EFBFBD><4F>|<1A>f<EFBFBD>
Ru<52>
ݰ<07><>
<EFBFBD><01><>ex<1D><><EFBFBD><EFBFBD>w<08><>^<5E><>ww<11><><EFBFBD>\?<3F><><EFBFBD>f<EFBFBD><66><EFBFBD><><D2A5><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD><15><><EFBFBD>i<EFBFBD><14>.|<06><1C>
_<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>;<3B>O<EFBFBD>}<7D>!<21>~<01><>3<EFBFBD>mFHO<48><06><><EFBFBD> <1B><>^<5E>|<7C><><EFBFBD>|<7C>Aь"<22>Q?<3F>8<1D>X<EFBFBD>ʶ^)<29>ä<EFBFBD>/o<>Z1<5A><31><EFBFBD>p<EFBFBD>/U<><55><17><>D<EFBFBD><44>*kp43<34><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ьf<D0AC>?<3F><>|Z8<5A>[<5B>׏f4.<2E><EFBFBD>6XZR}~<7E>Y
R<EFBFBD><EFBFBD>5<EFBFBD>m*<2A><>hL<68><4C><EFBFBD>jD<6A>TyY<79>^NkB<6B><42>ka&<26><><EFBFBD><EFBFBD>4<EFBFBD><54><C6AF><EFBFBD><EFBFBD><EFBFBD>2~<7E><>[<5B><>Z:<3A>S<EFBFBD><53><1A>f<EFBFBD><66>A<EFBFBD>_<EFBFBD><5F>8e<38>d<EFBFBD><64><EFBFBD><EFBFBD>D<EFBFBD>r:#<23>4<EFBFBD>yY<79>ҙ<1C>Ȅ<EFBFBD><08><14><>r<EFBFBD><6C><D6A7>lV<6C> <20>Y<EFBFBD>f#<1A>ʸ<EFBFBD>̣db*<2A><>D%<25>Y<EFBFBD>$<24><><EFBFBD>X.<2E> <09><>r<EFBFBD><72>q1)<13>$<24>Ч&榖4<E6A696>ӏȔ<D38F>.<2E>#<23>B<EFBFBD>D%eri_<69>p6<70>d<EFBFBD>YYK<59>g<10>#<23>L<EFBFBD>MT5k<35><6B>Ƽn) <0E><><EFBFBD>W<>y<EFBFBD>[\<5C><>J<><4A><EFBFBD>ͪ<>$<24>#<23><><EFBFBD><00>2<EFBFBD><32>%rY"<22>M<EFBFBD><4D><EFBFBD><EFBFBD>kV<07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>/$cօ"<22>P<EFBFBD><50><<3C><><EFBFBD><EFBFBD>/<2F><><EFBFBD>G6<47>d
Y<EFBFBD><12><><EFBFBD>'
<16>,<2C><02>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,92 @@
from random import choice
palabras = ['panadero', 'dinosaurio', 'helipuerto', 'tiburon']
letras_correctas = []
letras_incorrectas = []
intentos = 6
aciertos = 0
juego_terminado = False
def elegir_palbra(lista_palabras):
palabra_elegida = choice(lista_palabras)
letras_unicas = len(set(palabra_elegida))
return palabra_elegida, letras_unicas
def pedir_letra():
letra_elegida = ''
es_valida = False
abecedario = 'abcdefghijklmnñopqrstuvwxyz'
while not es_valida:
letra_elegida = input("Elige una letra: ")
if letra_elegida in abecedario and len(letra_elegida) == 1:
es_valida = True
else:
print("No has elegido una letra correcta")
return letra_elegida
def mostrar_nuevo_tablero(palabra_elegida):
lista_oculta = []
for l in palabra_elegida:
if l in letras_correctas:
lista_oculta.append(l)
else:
lista_oculta.append('-')
print(' '.join(lista_oculta))
def chequear_letra(letra_elegida, palabra_oculta, vidas, coincidencias):
fin = False
if letra_elegida in palabra_oculta:
letras_correctas.append(letra_elegida)
coincidencias += 1
else:
letras_incorrectas.append(letra_elegida)
vidas -= 1
if vidas == 0:
fin = perder()
elif coincidencias == letras_unicas:
fin = ganar(palabra_oculta)
return vidas, fin, coincidencias
def perder():
print("Te has quedado sin vidas")
print("La palabra oculta era " + palabra)
return True
def ganar(palabra_descubierta):
mostrar_nuevo_tablero(palabra_descubierta)
print("Felicitaciones, has encontrado la palabra!!!")
return True
palabra, letras_unicas = elegir_palbra(palabras)
while not juego_terminado:
print('\n' + '*' * 20 + '\n')
mostrar_nuevo_tablero(palabra)
print('\n')
print('Letras incorrectas: ' + '-'.join(letras_incorrectas))
print(f'Vidas: {intentos}')
print('\n' + '*' * 20 + '\n')
letra = pedir_letra()
intentos, terminado, aciertos = chequear_letra(letra,palabra,intentos,aciertos)
juego_terminado = terminado

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,176 @@
import os
from pathlib import Path
from os import system
mi_ruta = Path(Path.home(), "Recetas")
def contar_recetas(ruta):
contador = 0
for txt in Path(ruta).glob("**/*.txt"):
contador += 1
return contador
def inicio():
system('cls')
print('*' * 50)
print('*' * 5 + " Bienvenido al administrador de recetas " + '*' * 5)
print('*' * 50)
print('\n')
print(f"Las recetas se encuentran en {mi_ruta}")
print(f"Total recetas: {contar_recetas(mi_ruta)}")
eleccion_menu = 'x'
while not eleccion_menu.isnumeric() or int(eleccion_menu) not in range(1,7):
print("Elige una opcion:")
print('''
[1] - Leer receta
[2] - Crear receta nueva
[3] - Crear categoria nueva
[4] - Eliminar receta
[5] - Eliminar categoria
[6] - Salir del programa''')
eleccion_menu = input()
return int(eleccion_menu)
def mostrar_categorias(ruta):
print("Categorias:")
ruta_categorias = Path(ruta)
lista_categorias = []
contador = 1
for carpeta in ruta_categorias.iterdir():
carpeta_str = str(carpeta.name)
print(f"[{contador}] - {carpeta_str}")
lista_categorias.append(carpeta)
contador += 1
return lista_categorias
def elegir_categoria(lista):
eleccion_correcta = 'x'
while not eleccion_correcta.isnumeric() or int(eleccion_correcta) not in range(1, len(lista) + 1):
eleccion_correcta = input("\nElije una categoria: ")
return lista[int(eleccion_correcta) - 1]
def mostrar_recetas(ruta):
print("Recetas:")
ruta_recetas = Path(ruta)
lista_recetas = []
contador = 1
for receta in ruta_recetas.glob('*.txt'):
receta_str = str(receta.name)
print(f"[{contador}] - {receta_str}")
lista_recetas.append(receta)
contador += 1
return lista_recetas
def elegir_recetas(lista):
eleccion_receta = 'x'
while not eleccion_receta.isnumeric() or int(eleccion_receta) not in range(1, len(lista) + 1):
eleccion_receta = input("\nElije una receta: ")
return lista[int(eleccion_receta) - 1]
def leer_receta(receta):
print(Path.read_text(receta))
def crear_receta(ruta):
existe = False
while not existe:
print("Escribe el nombre de tu receta: ")
nombre_receta = input() + '.txt'
print("Escribe tu nueva receta: ")
contenido_receta = input()
ruta_nueva = Path(ruta, nombre_receta)
if not os.path.exists(ruta_nueva):
Path.write_text(ruta_nueva, contenido_receta)
print(f"Tu receta {nombre_receta} ha sido creada")
existe = True
else:
print("Lo siento, esa receta ya existe")
def crear_categoria(ruta):
existe = False
while not existe:
print("Escribe el nombre de la nueva categoria: ")
nombre_categoria = input()
ruta_nueva = Path(ruta, nombre_categoria)
if not os.path.exists(ruta_nueva):
Path.mkdir(ruta_nueva)
print(f"Tu nueva categoria {nombre_categoria} ha sido creada")
existe = True
else:
print("Lo siento, esa categoria ya existe")
def eliminar_receta(receta):
Path(receta).unlink()
print(f"La receta {receta.name} ha sido eliminada")
def eliminar_categoria(categoria):
Path(categoria).rmdir()
print(F"La categoria {categoria.name} ha sido eliminada")
def volver_inicio():
eleccion_regresar = 'x'
while eleccion_regresar.lower() != 'v':
eleccion_regresar = input("\nPresione V para volver al menu: ")
finalizar_programa = False
while not finalizar_programa:
menu = inicio()
if menu == 1:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
mis_recetas = mostrar_recetas(mi_categoria)
mi_receta = elegir_recetas(mis_recetas)
leer_receta(mi_receta)
volver_inicio()
elif menu == 2:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
crear_receta(mi_categoria)
volver_inicio()
elif menu == 3:
crear_categoria(mi_ruta)
volver_inicio()
elif menu == 4:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
mis_recetas = mostrar_recetas(mi_categoria)
mi_receta = elegir_recetas(mis_recetas)
eliminar_receta(mi_receta)
volver_inicio()
elif menu == 5:
mis_categorias = mostrar_categorias(mi_ruta)
mi_categoria = elegir_categoria(mis_categorias)
eliminar_categoria(mi_categoria)
volver_inicio()
elif menu == 6:
finalizar_programa = True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,57 @@
class Persona:
def __init__(self, nombre, apellido):
self.nombre = nombre
self.apellido = apellido
class Cliente(Persona):
def __init__(self, nombre, apellido, numero_cuenta, balance = 0):
super().__init__(nombre, apellido)
self.numero_cuenta = numero_cuenta
self.balance = balance
def __str__(self):
return f"Cliente: {self.nombre} {self.apellido}\nBalance de cuenta {self.numero_cuenta}: ${self.balance}"
def depositar(self, monto_deposito):
self.balance += monto_deposito
print("Deposito aceptado")
def retirar(self, monto_retiro):
if self.balance >= monto_retiro:
self.balance -= monto_retiro
print("Retiro realizado")
else:
print("Fondos insuficientes")
def crear_cliente():
nombre_cl = input("Ingrese su nombre: ")
apellido_cl = input("Ingrese su apellido: ")
numero_cuenta = input("Ingrese su numero de cuenta: ")
cliente = Cliente(nombre_cl, apellido_cl, numero_cuenta)
return cliente
def inicio():
mi_cliente = crear_cliente()
print(mi_cliente)
opcion = 0
while opcion != 'S':
print('Elije: Depositar (D), Retirar (R), o Salir (S)')
opcion = input()
if opcion == 'D':
monto_dep = int(input("Monto a depositar: "))
mi_cliente.depositar(monto_dep)
elif opcion == 'R':
monto_ret = int(input("Monto a retirar: "))
mi_cliente.retirar(monto_ret)
print(mi_cliente)
print("Gracias por operar en Banco Python")
inicio()

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,5 @@
def Sumar(número1, número2):
return número1+número2
suma = Sumar(5,7)
print(suma)

View File

@@ -0,0 +1,20 @@
'''
Este módulo contiene una sencilla función de suma,
y ejecuta un ejemplo mostrando el resultado en pantalla
'''
def sumar(numero1, numero2):
"""
Esta función recibe dos argumentos numéricos
y devuelve su suma
"""
return numero1 + numero2
SUMA = sumar(5, 7)
print(f'El resultado de la suma fue: {SUMA}')

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,32 @@
def numeros_perfumeria():
for n in range(1, 10000):
yield f"P - {n}"
def numeros_farmacia():
for n in range(1, 10000):
yield f"F - {n}"
def numeros_cosmetica():
for n in range(1, 10000):
yield f"C - {n}"
p = numeros_perfumeria()
f = numeros_farmacia()
c = numeros_cosmetica()
def decorador(rubro):
print("\n" + "*" * 23)
print("Su número es:")
if rubro == "P":
print(next(p))
elif rubro == "F":
print(next(f))
else:
print(next(c))
print("Aguarde y será atendido")
print("*" * 23 + "\n")

View File

@@ -0,0 +1,34 @@
import numeros
def preguntar():
print("Bienvenido a Farmacia Python")
while True:
print("[P] - Perfumería\n[F] - Farmacia\n[C] - Cosmútica")
try:
mi_rubro = input("Elija su rubro: ").upper()
["P", "F", "C"].index(mi_rubro)
except ValueError:
print("Esa no es una opción válida")
else:
break
numeros.decorador(mi_rubro)
def inicio():
while True:
preguntar()
try:
otro_turno = input("Quieres sacar otro turno? [S] [N]: ").upper()
["S", "N"].index(otro_turno)
except ValueError:
print("Esa noes una opción válida")
else:
if otro_turno == "N":
print("Gracias por su visita")
break
inicio()

View File

@@ -0,0 +1,55 @@
import re
import os
import time
import datetime
from pathlib import Path
import math
inicio = time.time()
ruta = 'C:\\Users\\Usuario\\Desktop\\Mi_Gran_Directorio'
mi_patron = r'N\D{3}-\d{5}'
hoy = datetime.date.today()
nros_encontrados = []
archivos_encontrados = []
def buscar_numero(archivo, patron):
este_archivo = open(archivo, 'r')
texto = este_archivo.read()
if re.search(patron, texto):
return re.search(patron, texto)
else:
return ''
def crear_listas():
for carpeta, subcarpeta, archivo in os.walk(ruta):
for a in archivo:
resultado = buscar_numero(Path(carpeta,a), mi_patron)
if resultado != '':
nros_encontrados.append((resultado.group()))
archivos_encontrados.append(a.title())
def mostrar_todo():
indice = 0
print('-' * 50)
print(f'Fecha de Búsqueda: {hoy.day}/{hoy.month}/{hoy.year}')
print('\n')
print('ARCHIVO\t\t\tNRO. SERIE')
print('-------\t\t\t----------')
for a in archivos_encontrados:
print(f'{a}\t{nros_encontrados[indice]}')
indice += 1
print('\n')
print(f'Números encotrados: {len(nros_encontrados)}')
fin = time.time()
duracion = fin - inicio
print(f'Duración de la búsqueda: {math.ceil(duracion)} segundos')
print('-' * 50)
crear_listas()
mostrar_todo()

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Some files were not shown because too many files have changed in this diff Show More