# Podemos tener parámetros por defecto o con valores predeterminados
def saludo(nombre="Anónimo"):
return "Hola " + nombre
ana = saludo("Ana")
anonim = saludo() # Como no paso un valor a 'nombre' pone por defecto 'Anónimo'
print(ana, anonim)
def potencia(numero, exponente=2):
return numero ** exponente # En python para elevar un número a otro se usa ** numero^exponente
# suma 1+1+1+1+1 5*1 (multiplicación)
# multiplicación 5*5*5*5 5^4 (potencia)
print(potencia(2, 4))
print(potencia(8)) # Como no le pongo valor a 'exponente' le pone por defecto 2
# En la siguiente función vamos a hacer que la cantidad por defecto sea '2'
# Si yo pongo repetir("Ana")-> "AnaAna"
def repetir2(cadena, cantidad):
return cadena * cantidad
# Que las funciones pueden llamar a otras funciones
def esPar(numero):
# En general siempre que tenemos un if que devuelve true o false podemos devolver directamente la condición del if
return numero % 2 == 0
def sumaPares(numero):
suma = 0
for i in range(0, numero + 1):
if esPar(i):
suma += i
return suma
print(sumaPares(100))
def esVocal(letra):
if letra == "a" or letra == "e" or letra == "i" or letra == "o" or letra == "u":
return True
else:
return False
def contarVocales(cadena):
# variable que acumula: en este caso lo que hago es contar
contador = 0
# Bucle para recorrer, en este caso recorro todas letras de la cadena
for letra in cadena:
# En letra tenemos todas las letras de la cadena
# Llamamos a la función esVocal para saber si es vocal o no
if esVocal(letra):
# Si sí que es vocal, contamos uno
contador += 1
# devolvemos el resultado
return contador
print(esVocal("a"))
print(esVocal("j"))
print(contarVocales("hola que tal")) # 5
def esPrimo(numero):
for i in range(2, numero):
if numero % i == 0:
return False
return True
def mostrarPrimos(numero):
resultado="1"
for i in range(2,numero+1):
if esPrimo(i):
resultado+=f",{i}"
return resultado
print(esPrimo(100))
print(esPrimo(17))
print(mostrarPrimos(50))
Soluciones funciones
# Cread una función a la que le pasemos un nombre y nos devuelva una cadena con un saludo
# saludo("Ana") -> "Hola Ana"
def saludo(nombre):
resultado = "Hola " + nombre
return resultado
# Cread una función a la que le pasamos una cadena y una cantidad y nos devuelve la cadena repetida esa cantidad
# repetir("Ana",3)->"AnaAnaAna"
def repetir(cadena, cantidad):
# código que nos repita una cadena una cantidad de veces
# Variable que me servirá de 'acumulador'
resultado = ""
# Bucle que me recorra una serie de elementos o, como en este caso, que me repita algo un número
# determinado de veces
for i in range(0, cantidad):
# Hago la operación que sea: concatenar, sumar, contar, multiplicar...
resultado += cadena
return resultado
def repetir2(cadena, cantidad):
return cadena * cantidad
def nombreTriple(nombre):
return (f'{nombre}\n' * 3) # Lo estamos imprimiendo directamente por la consola IMPURA
nombreTriple('Jenn')
# Cread una función a la que le pasamos un número y nos devuelve True si es par y False si no lo es
# esPar(5)->False esPar(80)->True
def esPar(numero):
if numero % 2 == 0:
resultado = True
else:
resultado = False
return resultado
def esParCompacta(numero):
# En general siempre que tenemos un if que devuelve true o false podemos devolver directamente la condición del if
return numero % 2 == 0
repetida = repetir("Hola", 5)
print(repetida)
repetida = repetir2("Hola", 5)
print(repetida)
print("hola" * 5)
print(nombreTriple("Ana"))
nombrerepetido = nombreTriple("Federico")
print(esPar(5))
print(esPar(6))
print(esParCompacta(5))
print(esParCompacta(6))
Ejercicio funciones
# Cread una función a la que le pasemos un nombre y nos devuelva una cadena con un saludo
# saludo("Ana") -> "Hola Ana"
# Cread una función a la que le pasamos una cadena y una cantidad y nos devuelve la cadena repetida esa cantidad
# repetir("Ana",3)->"AnaAnaAna"
# Cread una función a la que le pasamos un número y nos devuelve True si es par y False si no lo es
# esPar(5)->False esPar(80)->True
Ejemplos funciones
# Programación funcional
# lo que hemos estado haciendo hasta ahora es lineal
# cada instrucción sigue a la siguiente hasta que acabamos
# El primer paso para una programación estructurada es usar funciones
# ¿Qué es una función?
# Bloque de código reutilizable que permite recibir parámetros y devolver un resultado
# sintaxis def nombre_de_la_funcion(parametros):
# Esta función no tiene parámetros pero uso () igual
def saludar():
# Estas tres líneas se ejecutan cuando se llama a la función
print("Hola")
print("¿Qué tal estás")
print("Yo muy bien")
saludar()
print("------")
saludar()
print("------")
# Incorporamos un parámetro
def saludarNombre(nombre):
print(f"Hola {nombre}")
print("¿Qué tal estás")
print("Yo muy bien")
saludarNombre("Ana")
print("------")
saludarNombre("Juan")
# Añadir devolver un resultado
def suma(a, b):
return a + b
print(suma(2, 3))
print(suma(8, 10))
resultado = suma(19, 35)
print(resultado)
# Un ejemplo más complejo
def contarLetra(cadena, letra):
contador = 0
for c in cadena:
if c == letra:
contador += 1
return contador
total = contarLetra("mancha", "a")
print(total)
total = contarLetra("En un lugar de la mancha", "n")
print(total)
Break y continue
for i in range(1, 100):
print(i)
if i == 16:
break
cadena = input("Dime una cadena")
tiene = False
for letra in cadena:
if letra == "ñ":
tiene = True
break
if tiene:
print("Tiene Ñ")
else:
print("No hay ninguna Ñ")
numero = int(input("Dime un número"))
esPrimo = True
for i in range(2, numero):
if numero % i == 0:
esPrimo = False
break
if esPrimo:
print(f"{numero} es primo")
else:
print(f"{numero} no es primo")
# continue Se salta las instrucciones que hay a continuación y sigue con el bucle
numero = 100
suma = 0
for i in range(1, numero + 1):
if i % 2 == 0:
continue
print(i)
suma += i
cadena = input("Dime una cadena ")
resultado = ""
for letra in cadena:
if letra == "a":
continue
resultado += letra
print(resultado)
Ejemplos bucles anidados
# bucles anidados (y cualquier tipo de anidación)
# Nosotros podemos poner bucles dentro de bucles igual que poníamos ifs dentro de ifs
for numero in range(1, 11): # Este bucle va del 1 al 10
print(f"Tabla del {numero}: ") # ¿Cuantas veces se imprime esto? 10 veces
for i in range(1, 11): # Este también va del 1 al 10
print(f"{i} x {numero} = {i * numero}") # ¿Cuantas veces se imprime esto? 100 veces
colores = ["rojo", "verde", "azul"]
frutas = ["manzana", "plátano", "uva"]
for color in colores:
for fruta in frutas:
print(color, fruta) # ¿Cuantas veces se imprime esto? 9 veces
vocales="aeiou"
consonantes="ptd"
for vocal in vocales:
for consonante in consonantes:
print(consonante+vocal)
# pa ta da pe te de...
# pa pe pi po pu ta te ti to tu da de di do du
for consonante in consonantes:
for vocal in vocales:
print(consonante+vocal)
# Reloj
for hora in range(1,25):
for minuto in range(1,60):
print(f"{hora}:{minuto}")
Soluciones ejercicios for
# 1.- Pedir un número al usuario y mostrar la suma de todos los números hasta ese número
# 5->1+2+3+4+5=15
numero = int(input("Dime un número"))
suma = 0
for i in range(1, numero + 1):
suma += i
print(suma)
# 2.- Pedir una cadena al usuario y escribir si tiene o no tiene alguna 'ñ'
# 'Logroño'-> Tiene 'Barceloba'->No tiene
cadena = input("Dime una cadena")
tiene = False
for letra in cadena:
if letra == "ñ":
tiene = True
if tiene:
print("Tiene Ñ")
else:
print("No hay ninguna Ñ")
# 3.- Pedir un número al usuario y escribir su tabla de multiplicar
numero = int(input("Dime el número "))
for i in range(1, 11):
print(f"{i} x {numero} = {i * numero}")
# 4.- Pedir dos números al usuario (mínimo y máximo) y calcular la suma entre los dos
# 2 y 5 ->2+3+4+5=14
minimo = int(input("Dime el primer número "))
maximo = int(input("Dime el segundo número "))
suma = 0
for i in range(minimo, maximo + 1):
suma += i
print(suma)
# 5.- Pedir una cadena al usuario y escribir una cadena sin la letra 'a'
# 'patata' -> ptt 'ayer se fue' -> 'yer se fue'
cadena = input("Dime una cadena ")
resultado = ""
for letra in cadena:
if letra != "a":
resultado += letra
print(resultado)
Ejercicios for
# 1.- Pedir un número al usuario y mostrar la suma de todos los números hasta ese número # 5->1+2+3+4+5=15 # 2.- Pedir una cadena al usuario y escribir si tiene o no tiene alguna 'ñ' # 'Logroño'-> Tiene 'Barceloba'->No tiene # 3.- Pedir un número al usuario y escribir su tabla de multiplicar # 4.- Pedir dos números al usuario (mínimo y máximo) y calcular la suma entre los dos # 2 y 5 ->2+3+4+5=14 # 5.- Pedir una cadena al usuario y escribir una cadena sin la letra 'a' # 'patata' -> ptt 'ayer se fue' -> 'yer se fue'
Ejemplos for en python
# bucle for se utiliza para recorrer secuencias
# sintaxis:
# for elemento in secuencia:
# Bucle for para recorrer una serie numérica
# Elemento: i
# Secuencia: range(1,6) range nos genera un rango de números desde el primero hasta el último menos uno
# range(1,4)->[1,2,3]
# range(10,21)->[10,11,12,13,14,15,16,17,18,19,20]
for i in range(1, 6):
print(i)
# El ejercicio de los cuadrados: mostrar los cuadrados del 1 al 10
for i in range(1, 11):
print(i ** 2)
for letra in "En un lugar de la mancha":
print(letra, end=" ")
palabras = 1
for letra in "En un lugar de la mancha":
if letra == " ":
palabras += 1
print(palabras)
# Suma de todos los números del 1 al 100 con bucle for
suma = 0
for i in range(1, 101):
suma += i
print(suma)
# Esto en python es una lista
frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
print(fruta)
# range(max): Un iterable de números enteros consecutivos que empieza en 0 y acaba en max - 1
for i in range(10):
print(i) # del 0 al 9
# range(min, max): Un iterable de números enteros consecutivos que empieza en min y acaba en max - 1
for i in range(1, 11):
print(i) # del 1 al 10
# range(min, max, step): Un iterable de números enteros consecutivos que empieza en min
# acaba en max - 1 y los valores se van incrementando de step en step.
# Este último caso simula el bucle for con variable de control.
for i in range(1, 100, 5):
print(i) # del 1 al 100 en pasos de 5
# Nos permite poner pasos negativos
for i in range(10,-1,-1):
print(i)
# Sumar todos los números pares del 1 al 100 (incluidos)
suma = 0
for i in range(1, 101):
if i % 2 == 0:
suma += i
print(suma)
suma = 0
for i in range(0, 101, 2):
suma += i
print(suma)
# Mostrar la tabla de multiplicar del 7
# 1x7=7 2x7=14 3x7=21....10x7=70
for i in range(1, 11):
print(f"{i} x 7 = {i * 7}")
# Pedir una cadena al usuario y decirle cuantas letras 'a' tiene
# hola->1 patata->3
# Pedir una cadena al usuario: sabemos
# Un bucle para recorrer las letras (lo hemos visto en la teoría)
# Dentro de ese bucle vamos a mirar si la letra es la 'a'
contador = 0
cadena = input("Dime una cadena y te diré cuantas aes tiene ")
for letra in cadena:
if letra == "a":
contador += 1
print("El número de aes en '",cadena,"' es ",contador)
Soluciones while
# 1.- Pedir un número al usuario y hacer una cuenta regresiva desde ese número
# Pedir un número
numero = int(input("Dame un número entero"))
# Contar desde el número hasta el cero
while numero >= 0:
# Imprimir esa 'cuenta' para ver la regresión
print(numero)
numero = numero - 1 # numero-=1
# Sumar todos los números pares del 1 al 100 (incluidos)
# ¿Se averiguar todos los números pares del 1 al 100?
# ¿Se mostrar todos los número del 1 al 100?
# ¿Se cuando un número es par o impar?
# ¿Se sumar en una variable?
numero = 1
suma = 0
while numero <= 100:
if numero % 2 == 0:
suma += numero
numero += 1
print(suma)
numero = 0
suma = 0
while numero <= 100:
suma += numero
numero += 2
print(suma)
# Mostrar la tabla de multiplicar del 7
# 1x7=7 2x7=14 3x7=21....10x7=70
# Esto SI es un bucle
# Con qué numero empieza el bucle y con cual acaba
# Del 1 al 10
numero = 1
while numero <= 10:
print(f"{numero} x 7 = {numero * 7}")
numero += 1
# Pedir números al usuario hasta que introduzca un 0. Mostrar el número mayor
# Pedir un número al usuario (lo sabemos)
# Saber un bucle hasta que un valor sea 0
# Saber cual es el mayor de una serie de números
# Pido un número al usuario
numero = int(input("Dame un número entero"))
# De momento me lo quedo. Lo que es correcto es el mayor
mayor = numero
# Mientras el usuario no me introduzca un 0, voy pidiendo números
while numero != 0:
numero = int(input("Dame un número entero"))
# Si el número que me ha dado el usuario es mayor que el que ya tenía, pues me quedo con él
if numero > mayor:
mayor = numero
print(mayor)
# Escribir un programa que pida nombres y salga cuando escribamos la palabra ‘salir’
# Pido un nombre
# bucle hasta que digan salir
nombre = ""
while nombre != "salir":
nombre = input("Dime un nombre")
nombre = ""
lista = ""
while nombre != "salir":
nombre = input("Dime un nombre")
lista += nombre + " "
print(lista)
# Modificar el programa anterior para que salga cuando repitamos el nombre
# cuando el nombre que me introducen es igual al anterior
nombre = ""
anterior = "#"
while nombre != anterior:
anterior = nombre
nombre = input("Dime un nombre")
# Escribir un programa que calcule la suma de todos los múltiplos de 5 menores de 100
numero = 0
suma = 0
while numero <= 100:
suma += numero
numero += 5
print(suma)
# Pedir un número y calcular el factorial (factorial de 5. 5*4*3*2*1)
# Pido un número
# Hago un bucle desde donde hasta donde?
# Empiezo en el número y acabo en el 1
numero = int(input("Dime un número"))
factorial = 1
while numero >= 1:
factorial = factorial * numero
numero -= 1
print(factorial)
# Mostrar los cuadrados de los números del 1 al 10
# bucle del 1 al 10
numero=1
while numero<=10:
print(numero**2)
numero+=1