Restructure content and add notes from HolaMundo

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
2023-05-20 09:36:26 +02:00
parent 64ed03f811
commit f4e9797c4b
430 changed files with 889 additions and 24 deletions

View File

@@ -0,0 +1,22 @@
nombre = "Julia"
apellido = "Roberts"
nombrecompleto = nombre + " " + apellido
nombre = "Juan"
print(nombre)
nombre = "Laura"
print(nombre)
edad = 30
edad2 = 15
print(edad + edad2)
totaledad = edad + edad2
print(totaledad)
nombre = input("Dime tu nombre: ")
apellido = input("Dime tu apellido: ")
print("Tu nombre completo es " + nombre + " " + apellido)

View File

@@ -0,0 +1,27 @@
""" Intenger & float """
# La suma convierte el int en un float, para poder operar
mi_numero = 5 + 5.8
mi_numero = mi_numero + mi_numero
print(mi_numero)
print(mi_numero + mi_numero)
print(type(mi_numero))
# Cuando pedimos un numero recogemos un string
edad = input("Dime tu edad: ")
print("Tu edad es " + edad)
print(type(edad))
# Por eso tenemos que aplicar una conversión si queremos operar
op_edad = int(edad)
print(type(op_edad))
nueva_edad = 1 + op_edad
# Y si queremos volver a implimir concatenando, debemos transformarlo de nuevo
wr_nueva_edad = str(nueva_edad)
print("Cumpliras " + wr_nueva_edad)
print(type(wr_nueva_edad))

View File

@@ -0,0 +1,16 @@
import math
print(round(1.3)) # redondeo al número más cercano
print(round(1.7)) # redondeo al número más cercano
print(round(1.5)) # redondeo al número más cercano
print(abs(-77)) # Número absoluto
print(abs(55)) # Número absoluto
# Con el módulo math. Todos los metodos en https://docs.python.org/3/library/math.html
print(math.ceil(1.1)) # Lleva al número más cercano hacia arriba
print(math.floor(1.9999)) # Lleva al número más cercano hacia abajo
print(math.isnan(23)) # Indica si no es un número el valor
# print(math.isnan("23")) # Indica si no es un número el valor
print(math.pow(10, 3)) # Potencia
print(math.sqrt(25)) # Raiz cuadrada

View File

@@ -0,0 +1,32 @@
num1 = 20
num2 = 30.5
# Aquí num1 sigue siendo int
print(num1)
print(type(num1))
print(type(num2))
# Pero con una operación
num1 = num1 + num2
# Transformamos el tipo de num1 a float con una conversión """implícita""" de python
print(num1)
print(type(num1))
print(type(num2))
# Ahora vamos a hacer una conversión explícita
num3 = 5.8
print(num3)
print(type(num3))
# Aquí surge la conversión explícita
num4 = int(num3)
print(num4)
print(type(num4))
# Interesante el ejercicio de convertir str en floar dentro de un print
num1 = "7.5"
num2 = "10"
print(float(num1) + float(num2))

View File

@@ -0,0 +1,20 @@
color_auto = 'rojo'
matricula = 266254
print("Mi coche es {} con la matrícula {}".format(color_auto,matricula))
# A partir de la versiuón 3.6 se incorporaron las cadenas literales
print(f"\nMi coche es {color_auto} con la matrícula {matricula}")
# Evolución de format
x = 10
y = 5
z = x + y
print("\nMis números son " + str(x) + " y " + str(y) + " es igual a " + str(z))
print("\nMis números son {} y {} es igual a {}".format(x,y,z))
print(f"\nMis números son {x} y {y} es igual a {z}")

View File

@@ -0,0 +1,44 @@
x = 6
y = 2
z = 7
# Operadores
print(f"{x} mas {y} es igual a {x+y}")
print(f"{x} menos {y} es igual a {x-y}")
print(f"{x} por {y} es igual a {x*y}")
print(f"{x} dividido {y} es igual a {x/y}")
# División al piso (redondeando)
print(f"\n{z} dividido al piso de {y} es igual a {z//y}")
# Módulo (resto)
print(f"\n{z} modulo de {y} es igual a {z%y}")
# Numero elevado
print(f"\n{x} elevado a la {y} es igual a {x**y}")
print(f"{x} elevado a la {y} es igual a {x**3}")
# Raiz cuadrada
print(f"\nLa raíz cuadrada de {x} es {x**0.5}")
print("")
# Redondeo (Hace el redondeo al valor entero más próximo)
print(round(100/3))
print(round(12/7,2))
## La raíz cuadrada de antes
print(f"\nLa raíz cuadrada de {x} es {round(x**0.5,3)}")
## Otro ejemplo para ver el tipo. Veremos que el round es un intenger cuando se redondea en la variable
valor = round(95.6666666666666)
print(valor)
print(type(valor))
### Aquí transformamos el float en intenger dentro del print, pero la variable es un float
valor = 95.6666666666666
print(round(valor))
print(type(valor))
### Si ponemos un redondeo de cero será un float
num1 = round(95.666666666666,0)
print(num1)
print(type(num1))

View File

@@ -0,0 +1,25 @@
# Comisiones del 13% son las ventas totales
# Preguntar nombre y cuanto han vendido este mes
# Output frase que incluya su nombre y el monto que le corresponde por las comisiones
# input para preguntar y almacenar en variables
# los ingresos serán un string y se deben transformar a float
# Calcular el 13% multiplicando por 0.13
# almacenar en variable redondeando a 2 decimales
# RECOGER DATOS EN VARIABLES (Y CONVERSIÓN, TODO JUNTO)
nombre = input("¿Cuál es tu nombre? ")
ventas_mes = float(input("¿Cuáles fueron tus ventas este mes? "))
# TRANSFORMAR EL STR DE VENTAS A FLOAT PARA OPERAR
# ventas_mes = ventas_mes) # DEPRECADA, LO INTRODUZCO ARRIBA
# CALCULAR LA VENTAS TOTALES E INTRODUCIR EL RESULTADO EN UNA VARIABLE CON REDONDEO
comision = round(ventas_mes * 0.13,2)
# TRANSFORMAR LOS FLOATS EN STR PARA PODER IMPRIMIR POR PANTALLA
# ventas_mes = str(ventas_mes)
# comision = str(comision)# DEPRECADA, NO ES NECESARIA LA CONVERSIÓN
# IMPRIMIR FRASE POR PANTALLA
print(f"Hola {nombre}, tus ventas de este mes fueron {ventas_mes} Euros y tu comisión fue de {comision} Euros")

View File

@@ -0,0 +1,184 @@
# Día 2 - Programa un calculador de comisiones
## Índice
- [Día 2 - Programa un calculador de comisiones](#día-2---programa-un-calculador-de-comisiones)
- [Índice](#índice)
- [2.1. - Tipos de datos](#21---tipos-de-datos)
- [2.2. - Variables](#22---variables)
- [2.2.1 - Ejemplo de uso de variables](#221---ejemplo-de-uso-de-variables)
- [2.3. - Nombres de variables](#23---nombres-de-variables)
- [2.3.1. - Reglas](#231---reglas)
- [2.4. - integers \& floats](#24---integers--floats)
- [2.4.1. - int](#241---int)
- [2.4.2. - float](#242---float)
- [2.5. - Conversiones](#25---conversiones)
- [2.6. - Formatear cadenas](#26---formatear-cadenas)
- [2.7. - Operadores matemáticos](#27---operadores-matemáticos)
- [2.8. - Redondeo](#28---redondeo)
- [2.8.1. - algunos ejemplos de uso](#281---algunos-ejemplos-de-uso)
- [2.9. - Proyecto del Día 2](#29---proyecto-del-día-2)
- [Ficheros y documentación del día 2](#ficheros-y-documentación-del-día-2)
## 2.1. - Tipos de datos
En Python tenemos varios tipos o estructuras de datos, que son fundamentales en programación ya que almacenan información, y nos permiten manipularla.
| texto (srt) | números (int, float) | booleanos (bool) |
| :---------: | :------------------: | :--------------: |
| "Python" | Int 3 | True |
| "750" | float 3.0 | False |
| estructuras | Descripción | mutable | ordenada (Tiene índice) | duplicados |
| :-------------: | ------------------ | :----------------: | :---------------------: | :-------------------------: |
| listas [] | *list* | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| tuplas () | *Entre paréntesis* | :x: | :heavy_check_mark: | :heavy_check_mark: |
| sets {} | *Entre llaves* | :heavy_check_mark: | :x: | :x: |
| diccionarios {} | *dic key:valor* | :heavy_check_mark: | :x: * | :x: : :heavy_check_mark: ** |
*: En Python 3.7+, existen consideraciones **: key es única; value puede repetirse
## 2.2. - Variables
Las variables son espacios de memoria que almacenan valores o datos de distintos tipos, y (como su nombre indica) pueden variar. Se crean en el momento que se les asigna un valor, por lo cual en Python no requerimos declararlas previamente.
### 2.2.1 - Ejemplo de uso de variables
```python
pais = "México"
nombre = input("Escribe tu nombre: ")
print("Tu nombre es " + nombre)
num1 = 55
num2 = 45
print(nun1 + num2)
```
100
## 2.3. - Nombres de variables
Existen convenciones y buenas prácticas asociadas al nombre de las variables creadas en Python. Las mismas tienen la intención de facilitar la interpretabilidad y mantenimiento del código creado.
### 2.3.1. - Reglas
1. **Legible**: nombre de la variable es relevante según su contenido
2. **Unidad**: no existen espacios (La práctica en Python es incorporar guiones bajos *ejemplo_variable*)
3. **Hispanismos**: omitir signos específicos del idioma español, como tildes o la letra ñ
4. **Números**: los nombres de las variables no deben empezar por números (aunque pueden contenerlos al final)
5. **Signos/símbolos**: no se deben incluir : `" ' , < > / ? | \ ( ) ! @ # $%^&*~-+`
6. **Palabras clave**: no utilizamos palabras reservadas por Python.
## 2.4. - integers & floats
Existen dos tipos de datos numéricos básicos en Python: int y float. Como toda variable en Python, su tipo queda definido al asignarle un valor a una variable. La función type() nos permite obtener el tipo de valor almacenado en una variable.
### 2.4.1. - int
Int, o integer, es un número entero, positivo o negativo, sin decimales, de un largo indeterminado.
```python
Num1 = 7
print(type(num1))
```
<class 'int'>
### 2.4.2. - float
Float, o "número de punto flotante" es un número que puede ser positivo o negativo, que a su vez contiene una o más posiciones decimales.
```python
Num2 = 7.525587
print(type(num2))
```
<class 'float'>
## 2.5. - Conversiones
Python realiza conversiones implícitas de tipos de datos automáticamente para operar con valores numéricos. En otros casos, necesitaremos generar una conversión de manera explícita.
```python
int(var)
```
<class 'int'> """Convierte el dato en integer"""
```python
float(var)
```
<class 'float'> """Convierte el dato en float"""
## 2.6. - Formatear cadenas
Para facilitar la concatenación de variables y texto en Python, contamos con dos herramientas que nos evitan manipular las variables, para incorporarlas directamente al texto:
- Función format: se encierra las posiciones de las variables entre corchetes { }, y a continuación del string llamamos a las variables con la función format
```python
print("Mi auto es {} y de matrícula {}".format(color_auto,matricula))
```
- Cadenas literales (f-strings): a partir de Python 3.8, podemos anticipar la concatenación de variables anteponiendo f al string
```python
print(f"Mi auto es {color_auto} y de matrícula {matricula}")
```
## 2.7. - Operadores matemáticos
Veamos cuáles son los operadores matemáticos básicos de Python, que utilizaremos para realizar cálculos:
| Operador | Descripción |
| :------: | :------------------------------------------------ |
| + | Suma |
| - | Resta |
| * | Multiplicación |
| / | División |
| // | Cociente (división "al piso". Redondeo) |
| % | Resto (módulo) (Útil para detectar valores pares) |
| ** | Potencia |
| **0.5 | Raíz cuadrada (¡es un caso especial de potencia!) |
## 2.8. - Redondeo
El redondeo facilita la interpretación de los valores calculados al limitar la cantidad de decimales que se muestran en pantalla. También, nos permite aproximar valores decimales al entero más próximo.
round(number,ndigits)
- *number* - valor a redondear cantidad de
- *ndigits* - Cantidad de decimales (si se omite, el resultado es entero)
### 2.8.1. - algunos ejemplos de uso
```python
print(round(100/3))
```
33
```python
print(round(12/7,2))
```
1.71
## 2.9. - Proyecto del Día 2
La situación es esta: tú trabajas en una empresa donde los vendedores reciben comisiones del 13% por sus ventas totales, y tu jefe quiere que ayudes a los vendedores a calcular sus comisiones creando un programa que les pregunte su nombre y cuánto han vendido en este mes. Tu programa le va a responder con una frase que incluya su nombre y el monto que le corresponde por las comisiones.
Esto no es un programa complejo, pero es entendible que pueda complicarse cuando estás aprendiendo. Por más que lo que has aprendido hasta ahora es muy simple, ponerlo todo junto en un solo programa puede ser complejo, por lo que te doy un par de ayudas:
- Este programa debería comenzar preguntando cosas al usuario, por lo tanto, vas a necesitar input para poder recibir los ingresos del usuario y deberías usar variables para almacenar esos ingresos. Recuerda que los ingresos de usuarios se almacenan como strings. Por lo tanto, deberías convertir uno de esos ingresos en un float para poder hacer operaciones con él.
- ¿Y qué operaciones necesitas hacer? Bueno, calcular el 13% del número que haya ingresado el usuario. Es decir, que debes multiplicar ese número por 13 y luego dividirlo por 100. Recuerda almacenar ese resultado en una variable.
- Sería bueno que para imprimir en pantalla el resultado te asegures de que esa información no tenga más de dos decimales, para que sea fácil de leer, y luego organiza todo eso en un string al que debes dar formato. Recuerda que conocimos dos maneras de hacerlo y cualquiera de ellas es válida.
## Ficheros y documentación del día 2
- [01_variables.py](01_variables.py)
- [02_intengers_floats.py](02_intengers_Floats.py)
- [02_intengers_math.py](02_intengers_math.py)
- [03_Conversiones.py](03_Conversiones.py)
- [04_format.py](04_format.py)
- [05_operadores.py](05_operadores.py)
- [06_programa02.py](06_programa02.py)
[Documentación del día](../doc_curso/02_calculador_comisiones/)
---
Enlaces a todos los días: [dia 1 - creador de nombres](../dia_01/README.md) / [dia 2 - calculador de comisiones](../dia_02/README.md) / [dia 3 - analizador de texto](../dia_03/README.md) / [dia 4 - juego "adivina el número"](../dia_04/README.md) / [dia 5 - juego "El ahorcado"](../dia_05/README.md) / [dia 6 - recetario](../dia_06/README.md) / [dia 7 - cuenta bancaria](../dia_07/README.md) / [dia 8 - consola de turnos](../dia_08/README.md) / [dia 9 - buscador de números de serie](../dia_09/README.md) / [dia 10 - juego "Invasión espacial"](../dia_10/README.md) / [dia 11 - web scraping](../dia_11/README.md) / [dia 12 - gestor de restaurantes](../dia_12/README.md) / [dia 13 - asistente de voz](../dia_13/README.md) / [dia 14 - controlador de asistencia](../dia_14/README.md) / [dia 15 - machine learning](../dia_15/README.md) / [dia 16 - aplicación web de tareas pendientes](../dia_16/README.md)