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

Ejercicios While

1.- Pedir un número al usuario y hacer una cuenta regresiva desde ese número

2.- Sumar todos los números pares del 1 al 100 (incluidos)

3.- Mostrar la tabla de multiplicar del 7

4.- Pedir números al usuario hasta que introduzca un 0. Mostrar el número mayor

5.- Escribir un programa que pida nombres y salga cuando escribamos la palabra ‘salir’

6.- Modificar el programa anterior para que salga cuando repitamos el nombre

7.- Escribir un programa que calcule la suma de todos los múltiplos de 5 menores de 100

8.- Pedir un número y calcular el factorial (factorial de 5. 5*4*3*2*1)

9.- Mostrar los cuadrados de los números del 1 al 10