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")
Categoría: Python
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())
Sesiones virtuales
SESIÓN VIRTUAL (10-04-2025 18_00_00)-20250410_180338-Grabación de la reunión.mp4
SESIÓN VIRTUAL (16-04-2025 18_00_00)-20250416_180432-Grabación de la reunión.mp4
SESIÓN VIRTUAL (22-04-2025 18_00_00)-20250422_180529-Grabación de la reunión.mp4
SESIÓN VIRTUAL (24-04-2025 18_00_00)-20250424_180332-Grabación de la reunión.mp4
SESIÓN VIRTUAL (25-04-2025 18_00_00)-20250425_180447-Grabación de la reunión.mp4
SESIÓN VIRTUAL (29-04-2025 18_00_00)-20250429_180841-Grabación de la reunión.mp4
SESIÓN VIRTUAL (30-04-2025 18_00_00)-20250430_180856-Grabación de la reunión.mp4
SESIÓN VIRTUAL (02-05-2025 18_00_00)-20250502_180552-Grabación de la reunión.mp4
SESIÓN VIRTUAL (05-05-2025 18_00_00)-20250505_180717-Grabación de la reunión.mp4
SESIÓN VIRTUAL (06-05-2025 18_00_00)-20250506_180919-Grabación de la reunión.mp4
SESIÓN VIRTUAL (07-05-2025 18_00_00)-20250507_181546-Grabación de la reunión.mp4
SESIÓN VIRTUAL (08-05-2025 18_00_00)-20250508_180607-Grabación de la reunión.mp4
SESIÓN VIRTUAL (09-05-2025 18_00_00)-20250509_181432-Grabación de la reunión.mp4
Ejercicios funciones
# Cread una función tiradaDado que nos devuelva un número aleatorio del 1 al 6 # Cread una función que nos devuelva al azar una provincia de Cataluña # Cread una función que nos devuelva el año actual # Cread una función que nos devuelva True si hoy es viernes y false en caso contrario # Cread una función que nos devuelva la fecha actual en formato día/mes/año # Cread una función que nos devuelva el siguiente día laborable a partir de hoy
Soluciones ejercicios lambda
biblioteca = [
{"titulo": "El Quijote", "autor": "Cervantes", "precio": 20},
{"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
{"titulo": "Los detectives salvajes", "autor": "Roberto Bolaño", "precio": 23},
{"titulo": "Tom va a la escuela", "autor": "Rick Sánchez", "precio": 10}
]
# Para resolver los siguientes ejercicios podéis usar cualquier método de los vistos en clase
# Calcular la suma de todos los precios
# obtener precio
# Haciendo el bucle de toda la vida y sumando los precios
suma = 0
for libro in biblioteca:
suma += libro["precio"]
print(suma)
# Comprension de listas obteniendo solo el precio, entonces ya puedo usar 'sum'
precios = [libro["precio"] for libro in biblioteca]
print(sum(precios))
# Obteniendo los precios mediante el 'map' y una función lambda, después puedo usar 'sum'
precios = list(map(lambda x: x["precio"], biblioteca))
print(sum(precios))
# Queremos obtener el libro con el precio más alto
# Método tradicional con un for nos guardamos el más caro 'de momento'
libroCaro = None
precio = 0
for libro in biblioteca:
# Si encontramos uno más caro nos lo quedamos
if libro["precio"] > precio:
precio = libro["precio"]
libroCaro = libro
print(libroCaro)
# Usar max junto con lambda para que busque el máximo de la propiedad 'precio'
libroCaro = max(biblioteca, key=lambda x: x["precio"])
print(libroCaro)
# queremos ordenarlos por título
# Ordenamos mediante título usando una lambda
librosPorTitulo = sorted(biblioteca, key=lambda x: x["titulo"])
print(librosPorTitulo)
proyectos = [
{"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},
]
# Queremos calcular el coste total de todos los proyectos (horas*precio)
total = 0
for proyecto in proyectos:
total += proyecto["horas"] * proyecto["precio"]
print(total)
importes = [proyecto["horas"] * proyecto["precio"] for proyecto in proyectos]
print(sum(importes))
importes = list(map(lambda x: x["precio"] * x["horas"], proyectos))
print(sum(importes))
# El proyecto con mayor coste (horas*precio)
mayorCoste = max(proyectos, key=lambda proyecto: proyecto["precio"] * proyecto["horas"])
print(mayorCoste)
# ordenar por número de horas
porHoras = sorted(proyectos, key=lambda x: x["horas"])
print(porHoras)
# Filtrar los que cuesten más 1000 €
caros = [proyecto for proyecto in proyectos if proyecto["horas"] * proyecto["precio"] > 1000]
print(caros)
caros = list(filter(lambda x: x["horas"] * x["precio"] > 1000, proyectos))
print(caros)
Ejercicios lambda
biblioteca = [
{"titulo": "El Quijote", "autor": "Cervantes", "precio": 20},
{"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
{"titulo": "Los detectives salvajes", "autor": "Roberto Bolaño", "precio": 23},
{"titulo": "Tom va a la escuela", "autor": "Rick Sánchez", "precio": 10}
]
# Para resolver los siguientes ejercicios podéis usar cualquier método de los vistos en clase
# Calcular la suma de todos los precios
# Queremos obtener el libro con el precio más alto
# queremos ordenarlos por título
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},
]
# Queremos calcular el coste total de todos los proyectos (horas*precio)
# El proyecto con mayor coste (horas*precio)
# ordenar por número de horas
# Filtrar los que cuesten más 1000 €