sueldo = 500 irpf = 15 # Tenemos esta tabla: hasta 2000 10%, hasta 3000 12% hasta 5000 15% resto 25% if sueldo < 2000: irpf = 10 else: if sueldo < 3000: irpf = 12 else: if sueldo < 5000: irpf = 15 else: irpf = 25 print(irpf) # Lo de arriba se puede reescribir usando la estructura elif if sueldo < 2000: irpf = 10 elif sueldo < 3000: irpf = 12 elif sueldo < 5000: irpf = 15 else: irpf = 25 print(irpf) # Sintaxis básica: si se cumple la condición se ejecuta lo que está dentro del if if sueldo < 1000: print("El sueldo no puede ser menos que el SMI") # esto está dentro del if print("Se viene inspección") # esto está fuera del if print(sueldo) # sintaxis con else: si se cumple se ejecuta lo del if y si no, lo del else if sueldo > 3000: print("Sueldazo") else: print("Sueldo común") # sintaxis con elif # cada elif plantea una nueva condición que se evalua, como si fuera un if # pero queda más claro if sueldo < 1000: # Los sueldos menores de 1000 print("Inspeccion") elif sueldo < 2000: # Los menores de 2000 print("Sueldo bajo") elif sueldo < 4000: # De 4000 print("Buen sueldo") else: # Los mayores de 4000 (else del último if) print("Sueldazo") # Las condiciones pueden ser complejas y combinar operadores if sueldo < 1000 or sueldo > 9000: # Aquí combino dos condiciones con un or print("Sueldo incorrecto") # Pueden ser lo complejas que hagan falta if (sueldo < 1000 or sueldo > 9000) and sueldo % 10 == 0: print("Sueldo incorrecto que acaba en cero") # Puedo tener if dentro de otros ifs (ifs anidados) # Puede ser lo complicado que haga falta if sueldo > 5000: if sueldo % 10 == 0: print("Sueldo mayor de 5000 que acaba en 0") else: print("Sueldo mayor de 5000 que NO acaba en 0") else: print("Sueldo menor de 5000") # Veamos un ejemplo de esto # Calcular el precio de envío de un paquete # Tenemos lo siguiente: # Barcelona: 5€ da lo mismo el peso # Girona o Tarragona 5€ si pesa menos de 10 kilos y 10€ si pesa más # Resto de ciudades: hasta 10k 5€, hasta 20k 10€, hasta 30k 15 € resto 30€ ciudad = "Logroño" peso = 12 precio = 0 if ciudad == "Barcelona": precio = 5 else: if ciudad == "Girona" or ciudad == "Tarragona": # calculo los precios if peso < 10: precio = 5 else: precio = 10 else: if peso < 10: precio = 5 elif peso < 20: precio = 10 elif peso < 30: precio = 15 else: precio = 30 print(precio)
Categoría: Python
elif en python
sueldo = 2500 irpf = 15 # Tenemos esta tabla: hasta 2000 10%, hasta 3000 12% hasta 5000 15% resto 25% if sueldo < 2000: irpf = 10 else: if sueldo < 3000: irpf = 12 else: if sueldo < 5000: irpf = 15 else: irpf = 25 print(irpf) # Lo de arriba se puede reescribir usando la estructura elif if sueldo < 2000: irpf = 10 elif sueldo < 3000: irpf = 12 elif sueldo < 5000: irpf = 15 else: irpf = 25 print(irpf)
Condicionales python
# Estructura de control: Nos permite definir el flujo del programa # if : comprobar una condición y si se cumple se ejecuta un código # y, opcionalmente, si no se cumple, se ejecuta otro edad=int(input("Dime tu edad")) if edad>=18: print("Bienvenido a la web") print("Eres bienvenido/a") print("Disfruta del contenido") else: print("Eres menor de edad") print("Introduce un codigo de autorización si quieres acceder") codigo=input("Dime el codigo") if codigo=="1234": print("Bienvenido") else: print("Código incorrecto") print("Esto está fuera del if y se ejecuta tanto si se cumple la condición como si no") # Comparaciones # >, >=, <, <= , ==, != # La igualdad se utilizan dos signos = if edad==18: print("Bienvenido a la mayoría de edad") # Para diferente exclamación e igual != if edad!=18: print("No tienes 18 años") # Recordad que vimos los operadores booleanos # and, or, not if edad>=18 and edad<=25: print("Tienes descuento de carnet joven (entre 18 y 25)") if edad<18 or edad>65: print("Tienes descuento de niño o jubilado (menor de 18 o mayor de 65") # recordad la precedencia de los operadores, el and va primero if edad<18 or edad>20 and edad<30: print("Esto se cumple si la edad es menor de 18") print("O la edad está entre 20 y 30") # Recordad que si dudamos podemos usar paréntesis, que son gratis: if edad<18 or (edad>20 and edad<30): print("Esto se cumple si la edad es menor de 18") print("O la edad está entre 20 y 30") if not edad>=18: print("Eres menor") if edad<18: print("Es lo mismo") # Mini ejercicio planteado # Vamos a hacer un if que nos de un descuento si la edad es 40 o 50
Ejemplos operadores
precio=80 personas=7 print(precio/personas) print(precio//personas) print(2**4) # Modulo % Resto de la división print(17%5) # ¿Cómo saber si un número es par o impar? # Si el módulo 2 es 0, es par # si el módulo 2 es 1, es impar print(8%2) # 0, es par print(81%2) # 1, es impar numero=9 print(numero%2) print(numero%3) giro=850 print(giro%360)
Conversiones
texto = "123" numero = int(texto) print(numero + 10) # 133 texto = "12.3" numero = float(texto) print(numero + 10) # 22.3 edad = 30 print("Tienes " + str(edad) + " años") # Tienes 30 años # Esto da un error porque son tipos diferentes # print("Tienes " + (edad) + " años") # Tienes 30 años print(bool(0)) # False print(bool(1)) # True print(bool(125)) # True print(bool("")) # False print(bool("hola")) # True
Imprimir en python
print("hola") edad=20 print(edad) print("hola",edad) print("tu edad es ",edad) # La f lo que quiere decie es 'cadena formateada' # Nos permite poner valores entre llaves print(f"Tu edad es {edad} enhorabuena") print("Tu edad es",edad,"enhorabuena") print(f"Dentro de 10 años tendrás {float(edad)+10}") # La barra (slash) se llama carácter de escape # El caracter siguiente es especial # \" es una comilla print("Se llama \"wifi\" y es un medio de conexión") # \n es un salto de línea print("Se llama \n y es un medio de conexión") # \t es un tabulador print("Se llama \ty es un medio de conexión") # \\ es un barra print("para imprimir barra \\ ") # opciones del print print("hola",edad,"pepe",14) # especifico cual quiero que sea el separador print("hola",edad,"pepe",14, sep=" -- ") # especificar el final de línea print("hola") print("juan") print("hola", end=", ") print("juan") with open("salida.txt", "w") as f: print("Esto va al archivo", file=f) print("Esto también", file=f)
Variables
# tipos enteros (int) (sin decimales) edad=40 # tipos con decimales (float). Se usa el punto para indicar decimales temperatura=20.7 # Cadenas de letras (string) nombre='Ana' apellido=("Pi i Margall") direccion="""Calle del pino 08001 Barcelona""" precio=100 preciomal="100" cp="08001" precioConIva=precio*1.21 precioConIva2=float(preciomal)*1.21 # Booleano valores de cierto/falso (bool) mayorDeEdad=True estaLogueado=False
Ejercicio mediciones
irene.py
from sklearn import metrics import numpy as np def errores(reales, observados): mse = metrics.mean_squared_error(observados, reales) rmse = np.sqrt(mse) mae = metrics.mean_absolute_error(observados, reales) mape = metrics.mean_absolute_percentage_error(observados, reales) * 100 # Multiplicamos por 100 para porcentaje r2 = metrics.r2_score(observados, reales) max_error = metrics.max_error(observados, reales) return { "mse":mse, "rmse":rmse, "mae":mae, "mape":mape, "r2":r2, "max_error":max_error } def mostrar_resultados(resultados): print(f"Error Medio Cuadrático (MSE): {resultados["mse"]:.2f}") print(f"Raíz del error Medio Cuadrático (RMSE): {resultados["rmse"]:.2f}") print(f"Error Absoluto Medio (MAE): {resultados["mae"]:.2f}") print(f"Porcentaje de Error Absoluto Medio (MAPE): {resultados["mape"]:.2f}%") print(f"Coeficiente de Determinación (R²): {resultados["r2"]:.2f}") print(f"Error Máximo: {resultados["max_error"]:.2f}")
Caso de uso:
import irene as ir # Datos medicion = [43, 61, 37, 35, 79, 37, 60, 38, 30, 69, 88, 82, 95, 72, 71, 30, 74, 39, 91, 36, 65, 46, 74, 31, 94, 36, 71, 98, 89, 54] reales = [44, 66, 38, 39, 81, 40, 62, 39, 33, 71, 88, 85, 99, 73, 71, 34, 77, 44, 94, 40, 69, 51, 76, 33, 96, 36, 75, 99, 91, 57] # Calculo el error err=ir.errores(medicion,reales) # Imprimimos los resultados ir.mostrar_resultados(err)
Ejercicios preexamen
# vamos a hacer una función a la que le pasamos un tipo de bono # un tipo de cliente y una cantidad y nos calcule el precio de acuerdo a lo siguiente # bono=vip precio=3000 # bono=extra precio=2000 # bono=normal precio=1000 # tipo cliente= standard, el precio no cambia # tipo cliente=premium, el precio es la mitad # por defecto el bono sea normal y el cliente tambien # los parámetros por defecto siempre al final def precioTotal(cantidad, tipoBono="normal", tipoCliente="normal"): if tipoBono == "normal": precio = 1000 elif tipoBono == "extra": precio = 2000 else: precio = 3000 if tipoCliente == "premium": precio = precio / 2 return cantidad * precio print(precioTotal(10, "normal", "normal")) print(precioTotal(10, "normal", "premium")) print(precioTotal(10, "vip", "premium")) print(precioTotal(10)) # esta función, en teoría, cuenta el número de pares que hay en la lista # ¿Funciona? Si es que no por qué y como arreglarlo def contarPares(lista): total=0 for i in lista: if total%2==0: total+=i return total def contarPares(lista): total = 0 for i in lista: if i % 2 == 0: total += 1 return total # Una función a la que le pasamos un proyecto como este: proyecto = [ {"nombre": "Análisis", "horas": 10, "precio": 60}, {"nombre": "Desarrollo", "horas": 50, "precio": 50}, {"nombre": "Implementación", "horas": 5, "precio": 70}, {"nombre": "Pruebas", "horas": 15, "precio": 40}, ] # Y nos devuelve una lita de las tareas que ocupan más de 10 horas. En el caso anterior, desarrollo y pruebas # tareasLargas(proyecto)->["Desarrollo","Pruebas"] def tareasLargas(proyecto): res=[] for tarea in proyecto: if tarea["horas"]>10: res.append(tarea['nombre']) return res print(tareasLargas(proyecto)) # una función a la que le pasamos una cadena y nos devuelve una lista con la última letra de cada palabra # ultimaLetra("hola que tal")->["a","e","l"] def ultimaLetrafor(cadena): palabras=cadena.split() res=[] for palabra in palabras: res.append(palabra[-1]) return res def ultimaLetra(cadena): return [palabra[-1] for palabra in cadena.split()] print(ultimaLetra("hola que tal"))
Soluciones ejercicios funciones
# Crear una función areaCuadrado(lado) a la que le pasamos un lado y nos devuelve el área # areaCuadrado(2)-> 4 def areaCuadrado(lado): return lado*lado # Crear una función a la que le pasamos un número y nos devuelve true si es divisible por # 3 y false en caso contrario # multiploTres(8)->False multiploTres(9)->True def multiploTres(numero): return numero % 3==0 """ if numero % 3==0: return True else: return False """ # Crear una función a la que le pasamos una lista de números y nos dice # el número de pares que hay # numeroPares([1,2,3,4])->2 def numeroPares(lista): contador=0 # recorrer la lista for numero in lista: # cada vez que haya un par contarlo if numero % 2 == 0: contador += 1 return contador # Crear una función a la que le pasamos una cadena y un carácter y nos devuelve una lista # con las palabras que tienen ese caracter # buscaCaracter("Hola que tal","a")->["hola","tal"] # buscaCaracter("Hola que tal","u")->["que"] def buscaCaracter(cadena,caracter): res=[] # recorrer las palabras for palabra in cadena.split(): # Si en esas palabras está el caracter lo añado a res # Si no está, no hago nada if caracter in palabra: res.append(palabra) return res # Crear una función a la que le pasamos una cadena y nos devuelve la lista de palabras # ordenada por longitud # TODO: Preguntar que hacer si la longitud de dos cadenas es igual def ordenarCadena(cadena): # obtener la lista de palabras palabras=cadena.split() palabras=sorted(palabras,key=len) return palabras