# Promoción para clientes:
# Si tienen una antigüedad de más de 5 años
# Si son de Barcelona un 5% de descuento y si no un 2%
# Si no tienen esa antigüedad, si son de Barcelona un 3% de descuento
antiguedad=3
ciudad="Barcelona"
descuento=0
if antiguedad>=5:
print("El cliente es antiguo")
if ciudad=="Barcelona":
print("El cliente es de Barcelona")
descuento=.05
else:
print("El cliente NO es de Barcelona")
descuento=.02
else:
print("El cliente NO es antiguo")
if ciudad=="Barcelona":
print("El cliente es de Barcelona")
descuento=.03
print(f"El descuento es {descuento:.0%}")
Categoría: Python
Ejemplos condicionales
nota=5
if nota>9:
print("sobresaliente")
else:
if nota>7:
print("notable")
else:
if nota>5:
print("aprobado")
else:
print("suspenso")
if nota>9:
print("sobresaliente")
elif nota>7:
print("notable")
elif nota>=5:
print("aprobado")
else:
print("suspenso")
# El coste de envío para paquetes es el siguiente:
# Hasta 10 kg: 10 €
# de 10 a 20: 20 €
# de 20 a 40: 25 €
# Más de 40: 30 €
peso=30
if peso<=10:
print("10€")
elif peso<=20:
print("20€")
elif peso<=40:
print("25€")
else:
print("30€")
if peso>40:
print("30€")
elif peso>20:
print("25€")
elif peso>10:
print("20€")
else:
print("10€")
# Para calcular el IRPF de un premio de lotería tenemos la siguiente tabla:
# de 0 a 500€ (incluido) 0%
# de 500€ a 2000€ (incluido) 3%
# de 2000€ a 100000€ (incluido) 7%
# de 100000 a 1000000 (incluido) 15%
# Más de 1000000 35%
premio=6000000
# hacer en primer lugar un if..elif que nos diga el porcentaje
if premio<=500:
print("0%")
elif premio<=2000:
print("3%")
elif premio<=100000:
print("7%")
elif premio<=1000000:
print("15%")
else:
print("35%")
# Basándonos en ese esquema hacer un programa que le pida al usuario el importe del premio y
# que le muestre el dinero neto que va a cobrar (el importe menos el IRPF)
premio=int(input("ingrese su premio:"))
if premio<=500:
irpf=0
elif premio<=2000:
irpf=.03
elif premio<=100000:
irpf=.07
elif premio<=1000000:
irpf=.15
else:
irpf=.35
print(f"Para un premio de {premio}€ se le aplica un irpf de {irpf:.0%} y te quedan {premio-premio*irpf}€")
Repaso variables, entrada y salida
# Variable: cajita para almacenar un valor
nombre="Juan"
# Tipos: int, float, str, bool
# Entrada: input y lo almacenamos en una variable
alumno=input("Dime tu alumno: ")
# Si es un número lo tenemos que convertir
nota=int(input("Dime tu nota: "))
# Podemos realizar cálculos aritméticos
cuenta=300
comensales=4
total=cuenta/comensales
# Imprimimos con print
print(total)
# Usamos cadenas con formato (f-strings)
print(f"Para una cuenta de {comensales} comensales y un importe de {cuenta}€ sale a {total}€ cada uno")
Soluciones print
# Cread tres variables alumno con valor Pep, nota con valor 7.345 y asignatura con valor Python
# Imprimid los valores en una línea y la nota con dos decimales
# El alumno -- tiene una nota de __ en la asignatura __
alumno="Pep"
nota=7.345
asignatura="Python"
print(f"El alumno {alumno} tiene una nota de {nota:.2f} en la asignatura {asignatura}")
# tengo esta instrucción: print("Me llamo Lucia. Soy una IA. Te voy a quitar el trabajo 👿")
# Cambiala para que cada frase se imprima en una línea diferente
print("Me llamo Lucia. \nSoy una IA. \nTe voy a quitar el trabajo 👿")
Ejemplos print
nombre="Ana"
edad=64
email="ana@ana.com"
print(nombre,edad,email)
print(nombre,edad,email,sep=",")
print(nombre,edad,email,sep=" 😁😍🎶 ")
print("-"*30)
print(nombre,end=" ")
print(edad,end=" ")
print(email,end=" ")
coeficiente=0.12345
print(f"el coeficiente es {coeficiente}")
print(f"el coeficiente es {coeficiente:.1f}")
print(f"el coeficiente es {coeficiente:.3f}")
print(f"el coeficiente es {coeficiente:.0%}")
print(f"el coeficiente es {coeficiente:.2%}")
# Escape
print("Hola \"listillo\"")
print("Jotapé\nC\\Agla 6\n08001 BCN")
print("La ruta es c:\\temp")
Soluciones variables
# Ejercicios de python - Variables
#
# 🟢 Ejercicio 1: Datos personales
# Crea variables para:
# nombre
# edad
# ciudad
# Luego muestra una frase como:
# Hola, me llamo ___, tengo ___ años y vivo en ___.
#
from ejercicios_variables import celsius
nombre='Jotapé'
edad=27
ciudad="Logroño"
print(f"Hola, me llamo {nombre}, tengo {edad} y vivo en {ciudad}")
print("Hola, me llamo",nombre,", tengo",edad,"y vivo en ",ciudad)
#
# 🟢 Ejercicio 2: Suma de dos números
# Crea dos variables numéricas
# Guarda su suma en una tercera variable
# Muestra el resultado
# 👉 Extra: haz también resta y multiplicación
#
a=15
b=78
suma=a+b
resta=a-b
multiplicacion=a*b
print(suma,resta,multiplicacion)
# 🟢 Ejercicio 3: Conversión de unidades
# Convierte grados Celsius a Fahrenheit:
# Fórmula:
# F = C * 9/5 + 32
#
# Crea una variable celsius
# Calcula fahrenheit
# Muestra el resultado
#
celsius=100
fahrenheit=(celsius*9/5)+32
print(celsius,fahrenheit)
# 🟢 Ejercicio 4: Precio total con IVA
# Crea una variable con el precio de un producto
# Crea otra con el IVA (por ejemplo 21%)
# Calcula el precio final
# 👉 Fórmula:
# total = precio + (precio * iva)
#
precio=1000
iva=0.21
total=precio+(precio*iva)
print(total)
#
# 🟢 Ejercicio 5: Tiempo total en segundos
# Convierte:
# horas
# minutos
# segundos
# a un total en segundos
# 👉 Fórmula:
# total_segundos = horas * 3600 + minutos * 60 + segundos
#
horas=10
minutos=10
segundos=10
total_segundos = horas * 3600 + minutos * 60 + segundos
print(total_segundos)
# Calculadora de precio con descuento
# Una tienda tiene un producto con un precio base. Guarda el precio en una variable y
# el porcentaje de descuento en otra. Calcula el precio final después de aplicar el descuento
# y muéstralo.
precio_base=2000
descuento=0.1
precio_final=precio_base-descuento*precio_base
print(precio_final)
# Reparto de una cuenta de restaurante
# Tres amigos van a un restaurante. La cuenta total es 74.50 €. Guarda la cuenta en una variable
# y el número de comensales en otra. Calcula cuánto paga cada uno y cuánto es la propina
# si dejan un 10% extra entre todos
#
cuenta=74.50
comensales=3
importe=cuenta/comensales
print(importe)
propina=0.1
total_propina=cuenta*propina
print(total_propina)
print(total_propina/comensales)
Ejemplos variables python
# Enteros
edad=40
sueldo=900000
saldo_banco=-250
socios=27
print(edad)
print(sueldo)
print(saldo_banco)
print(socios)
print(type(edad))
# Decimales
nota=8.5
altura=17.6
coeficiente= -2.3
print(nota)
print(altura)
print(coeficiente)
print(type(nota))
print(.1+.2)
# cadenas
nombre="Ana Pi"
calle="C/ Aglá, 14"
email='ana@ana.com'
print(nombre)
print(calle)
print(email)
print(type(nombre))
poblacion="L'hospitalet de llobregat"
poblacion='L\'hospitalet de llobregat' # el '\' (slash) es carácter de escape
# remitente=("Jota Pé"
# "Calle del Pi 14"
# "08001 Barcelona")
remitente="""
Jota Pé
Calle del Pi 14
08001 Barcelona"""
print(remitente)
# concatenar
cp="08001"
ciudad="Barcelona"
linea_direccion=cp+" "+ciudad
print(linea_direccion)
cadena="Python"*15
print(cadena)
print(len(cadena))
prueba=" Ana Garcia "
print(len(prueba))
# Booleanos
mayor_edad=True
deudas=False
print(mayor_edad)
print(deudas)
print(type(mayor_edad))
edad=15
mayor_edad= edad>=18
print(mayor_edad)
# Cread una variable sueldo_mensual con valor de 1500
# Cread una variable sueldo_anual que sea ese valor * 12
# Imprimidlas
sueldo_mensual=1500
sueldo_anual=sueldo_mensual*12
print(sueldo_mensual,sueldo_anual)
# Cread una variable telefono con 666 999 666
# cread una variable email con ana@ana.com
# Cread una variable contacto con las dos variables concatenadas e imprimidlas
telefono="666 999 666"
email="ana@ana.com"
contacto=telefono+" - "+email
print(contacto)
# Para cracks ¿Cómo podría hacer una cadena de guiones con la misma longitud que contacto?
guiones="-"*len(contacto)
print(guiones)
# Ejemplos de cadenas f
from practica_datos import sueldo_mensual
alumno="Ana Pi"
nota=6
print(f'El alumno {alumno} ha sacado un {nota}')
sueldo_mensual=2000
print(f'El sueldo mensual es {sueldo_mensual} y el anual es {sueldo_mensual*12}')
# Esto no hacer
a=20
print(a,type(a))
a="hola que tal"
print(a,type(a))
a=9.5
print(a,type(a))
a=False
print(a,type(a))
edad="22"
edad=int(edad) # Convirtiendo de cadena a entero
print(edad+1)
nota=8
print("Tu nota es "+str(nota))
print(f'Tu nota es {nota}')
Ejercicios repaso examen
# función a la que le pasamos una lista de números y nos devuelve una tupla
# con el número de pares y el número de impares
# contarParidad([1,2,3,4,5])->(2,3) (dos pares y tres impares)
def contarParidad(lista):
pares = 0
impares = 0
for numero in lista:
if numero % 2 == 0:
pares += 1
else:
impares += 1
return (pares, impares)
def contarParidad2(lista):
pares = len([numero for numero in lista if numero % 2 == 0])
return (pares, len(lista) - pares)
print(contarParidad([1, 2, 3, 4, 5]))
print(contarParidad2([1, 2, 3, 4, 5]))
concesionario = [{"marca": "Tesla", "tipo": "Electrico", "autonomía": 500, "precio": 40000},
{"marca": "Citroen", "tipo": "Gasolina", "autonomía": 2500, "precio": 10000},
{"marca": "Ford", "tipo": "Gasolina", "autonomía": 3500, "precio": 20000},
{"marca": "Ferrari", "tipo": "Gasolina", "autonomía": 5500, "precio": 120000},
{"marca": "Seat", "tipo": "Electrico", "autonomía": 700, "precio": 10000},
{"marca": "Skoda", "tipo": "Gasolina", "autonomía": 3500, "precio": 7000},
]
# Cread una función que nos devuelva la suma de precios del concesionario
def sumaPrecios(concesionario):
total=0
for coche in concesionario:
total+=coche["precio"]
return total
def sumaPrecios2(concesionario):
return sum([coche["precio"] for coche in concesionario])
print(sumaPrecios(concesionario))
print(sumaPrecios2(concesionario))
# Cread una función a la que le pasamos una cadena y una longitud y nos devuelve las cadenas
# que superan esa longitud
# masLargas("hola que tal vamos",3)->["hola","vamos"]
def masLargas(cadena, longitud):
palabras=cadena.split(" ")
resultado=[]
for palabra in palabras:
if len(palabra)>longitud:
resultado.append(palabra)
return resultado
def masLargas2(cadena, longitud):
palabras=cadena.split(" ")
return [palabra for palabra in palabras if len(palabra)>longitud]
print(masLargas("hola que tal vamos",3))
print(masLargas2("hola que tal vamos",3))
Repaso examen tipo
# corregir código
def factorial(numero):
total = 1
while numero > 1:
total *= numero
numero -= 1
return total
print(factorial(5)) # 120 5*4*3*2*1
def palabraMaslarga(cadena):
palabras = cadena.split(" ")
masLarga = palabras[0] # Aquí NO hay un error
for palabra in palabras:
if len(palabra) > len(masLarga): # Aquí hay un error (al revés)
masLarga = palabra # Aquí hay un error
return masLarga
def numeroMayor(lista):
mayor = lista[0]
for numero in lista:
if numero > mayor: # Aquí hay un error (al revés)
mayor = numero # Aquí hay un error
return mayor
print(palabraMaslarga("En un lugar de la mancha de cuyo nombre no quiero acordarme"))
print(numeroMayor([1, 2, 3, 7, 6, 5, 2]))
print(numeroMayor([-5, -2, -17 - 3]))
# Cread una función porcentajeIva que nos devuelva:
# 0 si el producto es "primera necesidad"
# 4 si es 'libro' o 'revista'
# 10 si es 'pañales'
# 21 en otros casos
def porcentajeIva(producto):
if producto == "primera necesidad":
return 0
elif producto == "libro" or producto == "revista":
return 4
elif producto == "pañales":
return 10
else:
return 21
print(porcentajeIva("primera necesidad"))
print(porcentajeIva("libro"))
print(porcentajeIva("revista"))
print(porcentajeIva("pañales"))
print(porcentajeIva("cacahuetes"))
# define una función a la que le pasamos una cadena y nos dice la media de longitud
# de las palabras de la cadena
def mediaLongitud(cadena):
palabras = cadena.split(" ")
longitudTotal = 0
for palabra in palabras:
longitudTotal += len(palabra)
return longitudTotal / len(palabras)
def mediaLongitud2(cadena):
palabras = cadena.split(" ")
longitudes = [len(palabra) for palabra in palabras]
return sum(longitudes) / len(palabras)
print(mediaLongitud("aa bbbb ccc"))
print(mediaLongitud2("aa bbbb ccc"))
# Una función números pares a la que le pasamos una lista de números y nos devuelve los pares
def numerosPares(lista):
resultado = []
for numero in lista:
if numero % 2 == 0:
resultado.append(numero)
return resultado
def numerosPares2(lista):
return [numero for numero in lista if numero % 2 == 0]
print(numerosPares([1, 2, 3, 4, 5, 6, 7, 8]))
print(numerosPares2([1, 2, 3, 4, 5, 6, 7, 8]))
clase = [{
"nombre": "Ana",
"creditos": 15,
"curso": "Python"
}, {
"nombre": "Iu",
"creditos": 5,
"curso": "Python"
}, {
"nombre": "Eva",
"creditos": 25,
"curso": "BBDD"
}, {
"nombre": "Pep",
"creditos": 7,
"curso": "BBDD"
}, ]
# Crea una función a la que le pasamos una clase y nos devuelve el total de créditos
def totalCreditos(clase):
total = 0
for alumno in clase:
total += alumno['creditos']
return total
def totalCreditos2(clase):
total = sum([alumno['creditos'] for alumno in clase])
return total
def totalCreditosCurso(clase, curso):
total = 0
for alumno in clase:
if alumno['curso'] == curso:
total += alumno['creditos']
return total
def totalCreditosCurso2(clase, curso):
total = sum([alumno['creditos'] for alumno in clase if alumno['curso'] == curso])
return total
print(totalCreditos(clase))
print(totalCreditos2(clase))
print(totalCreditosCurso(clase, "BBDD"))
print(totalCreditosCurso2(clase, "BBDD"))
# ordenar los alumnos por crédito
def ordenCredito(clase):
ordenados = sorted(clase, key=lambda x: x['creditos'])
return ordenados
def ordenarCredito(clase):
ordenados = sorted([alumno['creditos'] for alumno in clase])
return ordenados
def mayorCredito(clase):
mayor = max(clase, key=lambda x: x['creditos'])
return mayor
def mayorCredito2(clase):
mayor = max([alumno['creditos'] for alumno in clase])
return mayor
print(ordenCredito(clase))
print(ordenarCredito(clase))
print(mayorCredito(clase))
print(mayorCredito2(clase))
# Cread una función a la que le pasamos una cadena y una letra y nos devueve una
# lista con las palabras que tienen esa letra
def palabrasConLetra(cadena, letra):
palabras = cadena.split(" ")
resultado = []
for palabra in palabras:
if letra in palabra:
resultado.append(palabra)
return resultado
def palabrasConLetra2(cadena, letra):
palabras = cadena.split(" ")
return [palabra for palabra in palabras if letra in palabra]
print(palabrasConLetra("hola que tal yo mal", "a"))
print(palabrasConLetra2("hola que tal yo mal", "a"))
# Una función a la que le pasamos una cadena y nos devuelve una lista
# con la primera letra de cada palabra
def primeraLetra(cadena):
palabras = cadena.split(" ")
resultado = []
for palabra in palabras:
resultado.append(palabra[0])
return resultado
def primeraLetra2(cadena):
palabras = cadena.split(" ")
return [palabra[0] for palabra in palabras]
print(primeraLetra("hola que tal yo muy bien"))
print(primeraLetra2("hola que tal yo muy bien"))
# Cread una función a la que le pasamos una cadena y nos devuelve una lista de palabras
# que empiecen y acaben con la misma letra
def inicioFin(cadena):
palabras = cadena.split(" ")
resultado=[]
for palabra in palabras:
if palabra[0]==palabra[-1]:
resultado.append(palabra)
return resultado
def inicioFin2(cadena):
palabras = cadena.split(" ")
return [palabra for palabra in palabras if palabra[0]==palabra[-1]]
print(inicioFin("hola ana como sales tan pronto"))
print(inicioFin2("hola ana como sales tan pronto"))
Soluciones ejercicios
import datetime
import random
# Cread una función tiradaDado que nos devuelva un número aleatorio del 1 al 6
def tiradaDado(limite=6):
return random.randint(1, limite)
for i in range(10):
print(tiradaDado())
# Cread una función que nos devuelva al azar una provincia de Barcelona
def provinciaAzar():
provincias = ["Barcelona", "Tarragona", "Lleida", "Girona"]
return random.choice(provincias)
for i in range(10):
print(provinciaAzar())
# Cread una función que nos devuelva el año actual
def anyoActual():
return datetime.date.today().year
print(anyoActual())
# Cread una función que nos devuelva True si hoy es viernes y false en caso contrario
def esViernes():
return datetime.date.today().weekday() == 4 # 0 lunes hasta 6 domingo
print(esViernes())
# Cread una función que nos devuelva la fecha actual en formato día/mes/año
def fechaActual():
return datetime.date.today().strftime("%d/%m/%Y")
print(fechaActual())
# Cread una función que nos devuelva el siguiente día laborable a partir de hoy
def siguienteLaborable():
fecha = datetime.date.today()
fecha += datetime.timedelta(days=1)
while fecha.weekday() > 4:
fecha += datetime.timedelta(days=1)
return fecha
def siguienteLaborable2():
fecha = datetime.date.today()
fecha += datetime.timedelta(days=1)
if fecha.weekday() > 4:
fecha += datetime.timedelta(days=(7 - fecha.weekday()))
return fecha
print(siguienteLaborable2())