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

Soluciones if

#Escribe un programa que solicite al usuario su edad y determine si es menor o
# igual a 18 años. Si es menor o igual a 18 años, muestra el mensaje
# “Eres menor de edad”, de lo contrario, muestra “Eres mayor de edad”.

edad=int(input("Introduce tu edad"))

if edad>=18:
    print("Eres mayor de edad")
else:
    print("Eres menor de edad")

# Crea un programa que pida al usuario dos números y determine cuál es el mayor
# de los dos números. Si son iguales, muestra un mensaje que indique que los números
# son iguales.

num1=float(input("Dime el primer número"))
num2=float(input("Dime el segundo número"))

if num1>num2:
    print(f"El mayor es {num1}")
    print("El mayor es", num1)
    print("El mayor es"+str(num1))
elif num2>num1:
    print(f"El mayor es {num2}")
else:
    print("Son iguales")

# Desarrolla un programa que pida al usuario un número entero y determine si es par
# o impar. Si es par, muestra “Es un número par”, si es impar, muestra
# “Es un número impar”.

num=float(input("Dime un número"))
if num%2==0:
    print(f"El numero {num} es par")
else:
    print(f"El numero {num} es impar")

# Escribe un programa que solicite al usuario su calificación en un examen y
# determine si ha aprobado o reprobado. Si la calificación es igual o superior
# a 60, muestra “Aprobado”, de lo contrario, muestra “Reprobado”.

nota=float(input("Dime tu calificación"))
if nota>=60:
    print(f"Estás aprobado")
else:
    print(f"Estás suspendido")

# Un usuario puede entrar a una fiesta si es mayor de 18 años y tiene entrada VIP o es invitado.

edad = 20
vip = False
invitado = True

# Tu condición va aquí:
if edad >= 18 and (vip or invitado):
    print("Acceso permitido")
else:
    print("Acceso denegado")

# Un sistema da acceso si el usuario es "admin" y la clave es "1234",
# pero no está bloqueado.

usuario = "admin"
clave = "1234"
bloqueado = False

# Tu condición:
if usuario=="admin" and clave=="1234" and not bloqueado: # bloqueado==False
    print("Login exitoso")
else:
    print("Acceso denegado")

# Un cliente tiene descuento si es mayor de 65 años o si tiene
# carnet de estudiante válido y es mayor de 18.

edad = 19
tiene_carnet = True

# Tu condición:
if edad>65 or (tiene_carnet and edad>18):
    print("Tiene descuento")
else:
    print("No tiene descuento")

# Un cliente tiene descuento :
# su edad está entre 60 y 80: edad>=60 and edad<=80
# tiene carnet y más de 18 años: tiene_carnet and edad>=18
# no tiene carnet y es menor de 10 años: not tiene_carnet and edad<10
# las tres condiciones estarán unidas con un or
edad = 19
tiene_carnet = True

# Tu condición:
# if edad>=60 and edad<=80 or tiene_carnet and edad>=18 or not tiene_carnet and edad<10:
if (edad>=60 and edad<=80) or (tiene_carnet and edad>=18) or (not tiene_carnet and edad<10):
    print("Tiene descuento")
else:
    print("No tiene descuento")


# Un estudiante aprueba si su nota es mayor o igual a 6 y
# no está inhabilitado por asistencia.

nota = 6.5
asistencia_suficiente = True

# Tu condición:
if nota>=6 and asistencia_suficiente:
    print("Aprobado")
else:
    print("Reprobado")

# Muestra un mensaje si el usuario no ha aceptado los términos:

acepta_terminos = False

if not acepta_terminos:
    print("Debes aceptar los términos para continuar")