# calcular el factorial de un número
# numero!= 1*2*3...*numero
# nombre de la función y parámetros def factorial(numero)
# que devuelvo: calcular el factorial
# casos de prueba. factorial(3)--> 6 factorial(5)--->120
def factorial(numero):
resultado=1
# codigo que me calculará el factorial todavía no sé como
for i in range(1,numero+1):
resultado*=i
return resultado
print(factorial(3)) # imprimir 6
print(factorial(5)) # imprimir 120
# quiero una función que me cuente en una cadena las veces que aparece una letra
# contarLetra("hola que tal","l")--->2 contarLetra("patata","a")--->3
def contarLetra(cadena,letra):
apariciones=0
# calcularé las veces que aparece la letra
for caracter in cadena:
if caracter==letra:
apariciones+=1
return apariciones
print(contarLetra("hola que tal","l")) # 2
print(contarLetra("patata","a")) # 3
Categoría: Python
Más ejemplos funciones
# funciones puras: no dependen del entorno para funcionar
# Son como una caja negra que procesan los datos que le pasamos
# y devuelven un resultado
import math
def entrarNoPura():
if edad >= 18:
return True
else:
return False
edad = 19
print(entrarNoPura())
edad = 9
print(entrarNoPura())
def entrarPura(edad):
if edad >= 18:
return True
else:
return False
print(entrarPura(20))
def suma(a, b, c, d):
return a + b + c + d
print(suma(1, 2, 3, 4))
def saludo(nombre):
return "Hola " + nombre
cadena = saludo("Ana")
print(cadena)
print(saludo("Eva"))
def nombreCompleto(nombre, apellido):
return nombre + " " + apellido
print(nombreCompleto("Ana", "Pi"))
def contarVocales(cadena):
vocales = 0
for letra in cadena:
# comprobaré si es vocal
for vocal in "aeiouáéíóúàèìòùü":
if letra == vocal:
vocales += 1
return vocales
def esPrimo(numero):
for i in range(2,numero):
if numero % i == 0:
return False
return True
print(contarVocales("Hola que tal"))
print(contarVocales("él es un pingüino matón"))
print(esPrimo(17))
print(esPrimo(18))
Ejemplos funciones
# dentro de un programa tengo muchos códigos que hacen diferentes cosas
# contarvocales
# La idea de una función es:
# 1) Poder reutilizar un código en diferentes sitios sin tener que repetirlo
# 2) Hacer que nuestro código sea modular y flexible
# 3) Costruir funciones puras (ya veremos lo que es)
# defino una función saludo
def saludo(nombre):
print("Hola", nombre, " que tal estás?")
print("Hace tiempo que no nos vemos")
print("Ya te lamaré", nombre)
saludo("Ana") # Llamo a la función con el valor de "Ana" y se ejecutará con este valor
saludo("Pep")
saludo("Juan")
# sintaxis de una función
# def nombre_de_la_funcion(parametro1,parametro2,parametro3...):
# Un código a ejecutar
# return valor
# Sin parámetros y sin devolver valor
def hola():
print("hola")
hola()
# No tiene parámetros pero devuelve un valor
def numeroPI():
return 3.141592653
pi = numeroPI()
print(pi)
# Tiene parámetros y devuelve un valor
def doble(numero):
return numero * 2
a = doble(8)
print(a)
a = doble(90)
print(a)
# Tiene un parámetro pero no devuelve ningún valor
def despedida(nombre):
print("Adios", nombre)
despedida("Ana")
# función con 3 parámetros que devuelve un resultado
def mayor(a, b, c):
if b > a:
a = b
if c > a:
a = c
return a
print(mayor(1, 8, 2))
print(mayor(10, 8, 2))
Solución contar vocales
# pedir una cadena al usuario
# y decir cuantas vocales tiene
# pido una cadena al usuario
cadena = input("Dame una cadena ")
totalVocales = 0
# Recorreré la cadena
for letra in cadena:
# comprobaré si es vocal
if letra == "a" or letra == "e" or letra == "i" or letra == "o" or letra == "u":
totalVocales += 1
# imprimo el resultado
print("vocales",totalVocales)
vocalesSin=0
vocalescon=0
for letra in cadena:
# comprobaré si es vocal
for vocal in "aeiou":
if letra == vocal:
vocalesSin += 1
for vocal in "áéíóúàèìòùü":
if letra == vocal:
vocalescon += 1
# imprimo el resultado
print("vocales sin acentos",vocalesSin)
print("vocales con acentos",vocalescon)
Ejercicio bucle
Vamos a pedir una cadena al usuario y vamos a decir el número de vocales que tiene.
Una vocal es a,e,i,o,u
Pasos:
-Pedir una cadena al usuario
– recorrer las letra de la cadena
– si es vocal contarla
– mostrar el resultado
Ejemplos bucles for
for i in range(10, 0, -1):
print(i)
for i in range(101):
cuadrado = i ** 2
if cuadrado % 2 == 0:
print(cuadrado)
numero = 20000000
queEs = True
for i in range(2, numero):
if numero % i == 0:
queEs = False
break # Un ejemplo muy bueno de uso de break
print(queEs)
# ¿Que nos está averiguando la variable queEs?
if queEs:
print(numero, "es primo")
else:
print(numero, "no es primo")
# break y continue
# break sale del bucle y continue se salta las siguientes instrucciones del bucle
for i in range(10):
if i == 5:
break # Sal del bucle, acabado
print(i)
for i in range(10):
if i == 5:
continue # Salta la siguiente instrucción
print(i)
cesta = [10, 30, 40, 5] # esto es una lista lo veremos
suma = 0
for valor in cesta:
suma += valor
print(suma)
cadena = ""
for i in range(5):
cadena += "*"
print(cadena)
cadena = "hola que tal"
palabras = 1
for letra in cadena:
if letra == " ":
palabras += 1
print(palabras)
# Bucles anidados: un bucle dentro de otro bucle
for i in range(1, 11):
print(i, "x 7 =", i * 7)
print("-----------")
# Todas las tablas de multiplicar
for tabla in range(1, 11):
for i in range(1, 11):
print(i, "x ", tabla, " =", i * tabla)
print("-----------")
# Todos los números primos hasta el 100
for numero in range(2,101):
queEs = True
for i in range(2, numero):
if numero % i == 0:
queEs = False
break
if queEs:
print(numero)
Bucle for
frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
print(fruta)
for contador in range(10):
print(contador)
# range(valor) -> 0 hasta el valor -1
# range(inicio,fin) -> desde inicio hasta fin -1
# range(inicio,fin,paso) -> desde inicio hasta fin de paso en paso
for i in range(5, 12):
print(i)
print("---------")
for i in range(0, 100, 5): # range(inicio,fin) -> desde inicio hasta fin -1
print(i)
print("---------")
for i in range(10, 1, -1): # range(inicio,fin) -> desde inicio hasta fin -1 en este caso paso negativo
print(i)
suma = 0
for i in range(101):
suma += i
print(suma)
for letra in "hola que tal":
print(letra)
letraABuscar = "a"
contador = 0
cadena = "tal"
for letra in cadena:
if letra == letraABuscar:
contador += 1
print("En '", cadena, "' hay", contador, "letras", letraABuscar)
notas = [5, 8, 1, 3, 6, 9]
aprobados = 0
for nota in notas:
if nota >= 5:
aprobados += 1
print("Hay", aprobados, "aprobados")
Soluciones ejercicios bucles while
# Escribir un programa que nos muestre una cuenta atrás desde 10
# 10 9 8 ...
cuenta = 10
while cuenta > 0:
print(cuenta)
cuenta -= 1
# Escribir un programa que muestre los cuadrados pares de los números del 1 al 100
# 4,16,36....
contador = 1
while contador <= 100:
# calculo el cuadrado
cuadrado=contador**2
# compruebo si es par
if (cuadrado % 2 == 0):
# imprimo
print(cuadrado)
contador += 1
Ejemplos
# Bucle es repetir algo varias veces
# while condicion: ejecutamos algo
contador = 0
while contador < 5: # mientras contador valga menos de 10 ejecuta el siguiente código
contador += 1 # dentro del while
print(contador) # dentro del while
print("Proceso acabado") # fuera del while
contador = 1
while contador < 100 and contador % 7 != 0:
contador += 1 # dentro del while
print(contador) # dentro del while
# suma los números del 1 al 100
contador = 1
suma = 0
while contador <= 100:
suma += contador
contador += 1
print("Los numeros del 1 al 100 suman ", suma)
# imprime por la consola los cuadrados de los números del 1 al 10
contador = 1
while contador <= 10:
print(contador ** 2)
contador += 1
cadena=""
while len(cadena)<10:
cadena+="*"
print(cadena)
contador=0
while contador<100:
contador+=7
print(contador)
Ejemplos combinadas
edad = 19
altura = 130
print("Tu altura es de ", 130, " cm")
# En una atracción del Tibidabo puedes entrar si mides más de 130 cm o tienes más de 10 años
# condiciones combinadas: tener varias condiciones conectadas con operadores lógicos
# ¿Qué es un operador lógico? Básicamente dos: and y or
# and implica que se cumplan las dos condiciones
# or que se cumpla alguna
if edad >= 10 or altura >= 130:
print("Puedes subir")
else:
print("No puedes subir")
# Para entrar en la discoteca tienes que tener más de 18 años y llevar zapatos
llevoZapatos = True
if edad >= 18 and llevoZapatos:
print("Puedes entrar a la discoteca")
else:
print("No puedes entrar")
# hay otro operador lógico que es el not: lo que hace es negar la condición
llevoZapatillas = True
if edad >= 18 and not llevoZapatillas:
print("Puedes entrar")
else:
print("No puedes entrar")
departamento = "marketing"
sueldo = 1000
# si el departamento es marketing y el sueldo está entre 900 y 1500 el irpf es de .8
# si el departamento es contabilidad y el sueldo está entre 1000 y 5000 el irpf es de .9
if departamento == "marketing" and sueldo >= 900 and sueldo <= 1500:
irpf = .8
if departamento == "contabilidad" and sueldo >= 1000 and sueldo <= 5000:
irpf = .9
# prioridad: not and or
# departamento marketing y sueldo > 3000 o departamento contabilidad y sueldo >4000 irpf=1.2
if departamento == "marketing" and sueldo > 3000 or departamento == "contailidad" and sueldo > 4000:
irpf = 1.2
# pero si no lo tengo claro
if (departamento == "marketing" and sueldo > 3000) or (departamento == "contailidad" and sueldo > 4000):
irpf = 1.2
# tengo una tienda online y aplico descuentos si se cumplen las siguientes características:
# por defecto ningún descuento
# si el cliente es de Barcelona y la compra es superior a 500, 10% de descuento
# si el cliente es de Tarragona y la compra es superior a 700, 10% de descuento
# si no es de Barcelona ni Tarragona y la compra es superior a 1000, 5% de descuento
descuento = 0
compra = 800
ciudad = "Logroño"
# ciudad=="Barcelona"
# compra>=500
if ciudad == "Barcelona" and compra >= 500:
descuento = 10
if ciudad == "Tarragona" and compra > 700:
descuento = 10
# este if es equivalente a los dos anteriores
if ciudad == "Barcelona" and compra >= 500 or ciudad == "Tarragona" and compra > 700:
descuento = 10
# ciudad no sea Tarragona o Barcelona
if not (ciudad == "Barcelona" or ciudad == "Tarragona") and compra >= 1000:
descuento = 5