# podemos definir nuestras propias funciones
# pero python tiene muchas funciones predefinidas
cadena = "Hola que tal"
print(len(cadena))
# Funciones de cadena: nos permiten manipular cadenas de texto
# Acceder a un carácter específico de la cadena o a un rango de caracteres
print(cadena[3]) # imprime la letra 'a'
# Con los dos puntos obtenemos una subcadena de la cadena desde el primer carácter hasta el último NO INCLUÍDO
print(cadena[3:7]) # imprime 'a qu' va del 3 al 6 (incluído)
for i in range(0, len(cadena) + 1):
print(cadena[0:i])
mayusculas = cadena.upper()
print(mayusculas)
minusculas = cadena.lower()
print(minusculas)
print(cadena.title())
# Si una cadena está dentro de otra
print("que" in cadena)
print("pepe" in cadena)
# Nos busca la posición de una cadena dentro de otra
# Si no está nos devuelve -1
posicion = cadena.find("que")
print(posicion)
posicion = cadena.find("pepe")
print(posicion)
# Podemos reemplazar una cadena por otra
print(cadena.replace("que", "ke"))
print(cadena.replace("a", "@"))
print(cadena.replace("a", ""))
# Podemos indicar las veces que queremos reemplazar
cadena = "patatas para ana"
print(cadena.replace("a", "@", 3))
cadena = " hola que tal "
# con strip quito espacios del principio y del final
print(cadena.strip().upper()) # encadenamiento y funciona porque las funciones devuelven un valor
sinespacios = cadena.strip()
mayus = sinespacios.upper()
print(mayus)
# en una cadena reemplazar las A por @ independentemiente de mayúsculas o minúsculas
cad = "CADA PATATA tiene carbohidratos"
print(cad.lower().replace("a", "@"))
some_string = 'Hello World'
print('Testing a String')
print('-' * 20)
print('some_string', some_string)
print("some_string.startswith('H')",
some_string.startswith('H'))
print("some_string.startswith('h')",
some_string.startswith('h'))
print("some_string.endswith('d')", some_string.endswith('d'))
print('some_string.istitle()', some_string.istitle())
print('some_string.isupper()', some_string.isupper())
print('some_string.islower()', some_string.islower())
print('some_string.isalpha()', some_string.isalpha())
print('String conversions')
print('-' * 20)
print('some_string.upper()', some_string.upper())
print('some_string.lower()', some_string.lower())
print('some_string.title()', some_string.title())
print('some_string.swapcase()', some_string.swapcase())
print('String leading, trailing spaces', " xyz ".strip())
Autor: Juan Pablo Fuentes
Formador de programación y bases de datos
Parámetros por defecto y llamar a otra función
# 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)