# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     name: python3
# ---

# + [markdown] id="view-in-github" colab_type="text"
# <a href="https://colab.research.google.com/github/seldoncode/Python_CoderDojo/blob/main/Python_CoderDojo02.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>

# + [markdown] id="0A284inMFZqg"
# # Variables
# Una variable es como una caja donde ponemos guardar valores:
# * numeros enteros (int)
# * números con decimales (float)
# * booleanos (True, False)
# * cadenas alfanuméricas (string)
# * ...
#
# Ejemplo: x = 5
#
# El sistema operativo reserva una dirección de memoria RAM donde guardar esa variable.
#
# Luego se puede cambiar el valor almacenado en la variable: 
#
# Ejemplo: x = 7
#
# Se dice que hemos **asignado** un nuevo valor a la variable.

# + colab={"base_uri": "https://localhost:8080/"} id="IqeAqipMG7rD" outputId="dff36516-5bb5-4fae-b8dc-dbb108ea2e74"
x = 5
print("x =",x)
x = 7
print("x =",x)

# + colab={"base_uri": "https://localhost:8080/"} id="BoZ3cNctIHOW" outputId="46cb4fcd-f5ea-4820-b4e1-c8ece6acd916"
edad = 14                        # int, número entero
nota_examen = 7.3                # float, número flotnte (con decimales)
ciudadNacimiento = "Madrid"      # string, cadena alfanumérica
avion_aterrizado = True          # boobleano, variable de tipo boolean, True, False
edad_hermanos = [9,12,14]        # list, variable de tipo lista. Las listas van entre corchetes []

print(edad)
print(nota_examen)
print(ciudadNacimiento)
print(avion_aterrizado)
print(edad_hermanos)

# + [markdown] id="gXIy9WmPmMVL"
# ## Tipos de variables
# Con la función ``````type()`````` podemos ver de qué tipo es una variable.

# + colab={"base_uri": "https://localhost:8080/"} id="5NVB5d_QmXAD" outputId="0ed6ce6b-1333-400b-8f06-a54c424521a9"
print("edad = ", edad)
print(type(edad))

print("nota_examen = ", nota_examen)
print(type(nota_examen))

print("ciudadNacimiento = ", ciudadNacimiento)
print(type(ciudadNacimiento))

print("avion_aterrizado = ", avion_aterrizado)
print(type(avion_aterrizado))

print("edad_hermanos = ", edad_hermanos)
print(type(edad_hermanos))


# + [markdown] id="8SbGCIoBki-I"
# ## Nombres de variables ilegales
# * No pueden empezar por número
# * No pueden llevar símbolos como $€@%&?  (la barra baja si se admite)
# * No pueden tener espacios en blanco
# * No valen palabras reservadas del lenguaje (and, or, True, import, ...)

# + id="sO40EHRZJ4YY"
#100Montaditos = 2.5     # error, no se puede empezar por número
#money$ = 20             # error, no llevar simbolos
#Elon Musk = "Sudáfrica" # error, no valen espacios, por convenio se usan minúsculas
#import = 100            # error, palabra reservada del lenguaje
_clave = "Voyager"       # si se puede comenzar por barra baja

# + [markdown] id="KrgyE0wV3IC_"
# ## Caracteres no recomendados
# * No se recomienda usar letras acentuadas áéíóú ÁÉÍÓÚ üá
# * No se recomenda usar ñ Ñ ç Ç
# * No se recomienda usar mayúsculas
#

# + [markdown] id="f1blFCkLLkj6"
# ### Reto 2.1. Creación y asignación de variables
# Crea unas cuantas variable de diferente tipo:
# * int
# * float
# * string
# * boolean
# * list
# Inicializa las variables con algún valor.
# Mustra en pantalla el valor de cada variable.
# Cambia el valor de las variables.
# Imprime el nuevo valor de cada variable.

# + [markdown] id="6pTGUkhaMzTP"
# ### Reto 2.2. Precio con descuento
# - Crea una variable con el precio de un juguete que inicialmente es de 20 euros.
# - Imprime su precio
# - El juguete se pone de oferta un 35%, asigna a la variable el nuevo precio
# - Imprime el nuevo precio

# + [markdown] id="gsWJLj4tOyw4"
# ## Operar con variables
# Podemos operar con variables usando:
# * los operadores aritméticos (+,-,*,/,//,%)
# * los operadores lógicos (not, and, or)
# * los comparadores (==, !=,<,>,<=,>=).

# + colab={"base_uri": "https://localhost:8080/"} id="RX4u7Exwg3ku" outputId="1f8b253e-3d38-4de5-bb67-a1db8d484790"
x = 5
y = 2
print("x+y =", x+y)
print(f"La resta de {x}-{y} es {x-y}")                # la f significa format, permite formatear lo que imprimimos
print(f"Si elevas {x} a {y} el resultado es {x**y}")  # El cuadrado de 5 es 5*5=25

# + colab={"base_uri": "https://localhost:8080/"} id="RkMS8ssQPXRk" outputId="e04bb52d-d587-4e65-ac23-e9957bea757a"
# precio de los productos en la cesta de la compra
leche = 4.6
lechuga = 1.2
pan = 0.8
huevos = 4.2
total = leche + lechuga + pan + huevos
print(f"El importe todal de la cesta de la compra es {total} euros.")

# + [markdown] id="uiLHQjoMpYIc"
# ### Reto 2.3 Calcular el precio con IVA
# Sabemos que el precio de un dron es de 200 € antes de aplicar el impuesto del IVA y que el impuesto aplicable es del 21%. Calcular el precio de venta al público que incluye ya el impuesto.  
# Usar variables.

# + [markdown] id="bNvB5pW8rpqf"
# ### Reto 2.4 Comprar unos refrescos
# Me han dado un billete de 20 € para ira a comprar unas latas de refrescos. El precio de cada lata antes de aplicar el IVA es de 1.2 €. El IVA aplicable a las bebidas es del 10%.
# ¿Cuántas latas podré comprar?
# ¿Cuánto me ha sobrado?    
# Usar variables.

# + [markdown] id="3x2W2FLitawf"
# ## Contadores
# Un contador es una variable que se va incrementando, habitualmente de uno en uno.  
# Por ejemplo, cuando cumplimos un año más nuestra edad se incrementa en un año.

# + colab={"base_uri": "https://localhost:8080/"} id="JNaNOjvetz4M" outputId="221ed85b-8a0b-4536-a9e2-2c2d634e93db"
edad = 15
edad = edad + 1             # contador. La variable edad es igual al antiguo valor de la variable edad más uno.
print(edad)

# + colab={"base_uri": "https://localhost:8080/"} id="ZjdupJ0iuITs" outputId="4b45f1e4-197b-4d95-95db-dc8939ef362f"
vidas = 3                  # comenzamos un juego con 3 vidas
print(vidas)

vidas = vidas + 1          # si en el juego ganamos una vida podemos incrementar su valor en uno
print(vidas)

vidas += 1                 # esta es una forma abreviada de escribir lo mismo que antes. Incrementa las vidas en una más.
print(vidas)

vidas -= 1                 # perdemos una vida. Es una forma abreviada de escribir   vidas = vidas - 1
print(vidas)

# + colab={"base_uri": "https://localhost:8080/"} id="B33qx3lbuzfE" outputId="0f37e5af-3e03-414b-a956-3f5ca7127856"
# vamos a ir anotando la página de un libro por la que vamos y las que leemos cada día, para ver como se incrementa
pagina = 100      # página por la que comenamos a anotar el valor, para saber por donde vamos en la lectura del libro
print(pagina)

pagina += 12      # hoy he leido 12 páginas
print(pagina)

pagina += 18      # hoy he leido 18 páginas más
print(pagina)

pagina -= 5       # he retrocedido 5 páginas ya que quiero volver a leerlas, porque ayer no me enteré bien de esa parte
print(pagina)

# + [markdown] id="6G_03q_fw9Wu"
# ### Reto 2.5. Cobros y pagos
# * Inicialmente tengo 20 €.
# * Me dan 50 € por mi cumpleaños.
# * Me gasto en ir al cine 15 €
# * Me encuentro una moneda de 2 €.
# * Compro un juego de 17 €.
# * Compro un comic por 8 €.  
# ¿Cuánto dinero tengo al final?  
# Utiliza variables, haciendo los pasos intermedios.

# + [markdown] id="OhVFpZ6b0kJ6"
# ### Reto 2.6. Variables permitidas
# Comprueba si la siguientes variable son o no válidas.
# * IVA = 21
# * input = 100
# * myCity = "Madrid"
# * _100_Km = "Repostar"
# * velocidad luz = 300000
# * velocidad_luz = 300_000
# * 101Dalmatas = "Disney"
# * ciudad_de_la_luz = "París"
# * nombre@email ="<EMAIL>"
# * puntos-totales = 117
# * global = "Viaje al mundo en 80 días"
# * número_daño = 4   # no se recomienda el uso de la ñ ni acentos

# + [markdown] id="OIjoTBLZ6LQl"
# ## Variables booleanas
# Una variable puede tomar el valor True o False.

# + colab={"base_uri": "https://localhost:8080/"} id="yf5aiwAv6WYB" outputId="fab0acce-ee94-4273-efb7-3d68e8837b28"
huevos = 100
docenas = huevos//12
sobran = huevos%12
justos = sobran==0      # justos es una variable booleana
print(f"En {huevos} huevos hay {docenas} docenas y sobran {sobran} huevos.")
print(f"¿Están justos? {justos}")

# + [markdown] id="Tjayh3HH76JO"
# ### Reto 2.7. Plazas de un autobús
# * Un autobús tiene 37 plazas.
# * Inicialmente viajan 20 personas.
# * Crea una variable booleana que diga si quedan plazas libres.
# * Luego suben al autobús 12 personas.
# * En la siguiente parada bajan 4 y quieren subir 8, ¿será posible?
# * En la siguiente parada bajan 3 y quieren subir 5, ¿será posible?
# * Usa variables siguiendo el proceso paso a paso.

# + [markdown] id="iqSp8fUu8fsX"
# ### Reto 2.8. Usando variables booleanas
# * Crea un caso con dos variables booleanas, por ejemplo en relación a si hemos pasado un nivel de un juego y si nos quedan recursos.  
# * Usa ambas variables booleanas y prueba a combinarlas con and, or, not.

# + [markdown] id="Y1WEmFNH_20U"
# ## Intercambio de valores de dos variables
# Tenemos dos variables:  
# * x = 3
# * y = 5  
# deseamos intercambiar sus valores.  
# Podemos resolverlo usando cualquiera de los siguientes métodos.
#
# ### Método 1
# Usando una variable auxiliar que podemos llamar aux, que recogerá el valor de x mientras y toma su valor.

# + colab={"base_uri": "https://localhost:8080/"} id="friJc-pJAuVl" outputId="c76b5196-3adc-48a2-ec7b-46f4f109dc2f"
x = 3
y = 5
aux = x
x = y
y = aux
print("nuevo valor de x:", x)
print("nuevo valor de y;", y)

# + [markdown] id="rbZEJF3ABOMN"
# ### Método 2
# Python tiene un método estupendo que permite intercambiar los valores de x e y sin usar una variable auxiliar. Muchos otros lenguajes no tienen este método.

# + colab={"base_uri": "https://localhost:8080/"} id="E4pGtDLhBgBm" outputId="d9519eb5-424c-42fd-b4a0-c8c859c1b911"
x = 3
y = 5
x,y = y,x                        # forma maravillosa de permutar valores entre variables
print("nuevo valor de x:", x)
print("nuevo valor de y;", y)

# + [markdown] id="iuQoOJRkCIzB"
# ## Asignaciones múltiples

# + colab={"base_uri": "https://localhost:8080/"} id="ya5YgilKCOuk" outputId="f470af7e-036b-46eb-bffa-638e850030f3"
# asignamos las edades de Ana y de Eva.
ana, eva = 14, 16
print(f"La edad de Ana es {ana} y la edad de Eva es {eva}.")

# + colab={"base_uri": "https://localhost:8080/"} id="Uav_N3qjCgZP" outputId="a7086336-79f6-43aa-a5b1-8a99a5dde089"
# En un juego los tres coches parten con el mismo número de puntos
rojo = verde = azul = 100
print(f"El rojo tiene {rojo}, el verde tiene {verde} y el azul tiene {azul} puntos.")

# + [markdown] id="ZCld-pdaD63S"
# ### Reto 2.9. Juego de cartas
# En un juego de cartas cuando sale la carta "reverse" los jugadores deben intercambiar sus cartas, y por tanto sus puntos.  
# Hay dos jugadores que tienen estos puntos:  
# * luis = 80
# * raul = 45  
# Crear una tirada de una carta donde se pueda sacar o no la carta "reverse", controlar este posible resultado con una variable booleana.  
# Si se da la situación de "reverse" intercambie los puntos de los jugadores.  
# Pruebe a realizar la permuta usando varios métodos.

StarcoderdataJupyterScriptsDedupFiltered