Soluciones funciones cadena


# Crear una función extensa a la que le pasemos
# dos cadenas y nos devuelva la cadena de mayor longitud

def extensa(cadena1,cadena2):
    if len(cadena1)==len(cadena2):
        return ""
    # comparar la longitud de las dos cadenas y devolver la mas larga
    if len(cadena1)>=len(cadena2):
        return  cadena1
    else:
        return cadena2

larga=extensa("a","b")
if larga!="":
    print("La cadena mas larga es: ",larga)
else:
    print("Son iguales")</pre>


# Crear una funcion contarVocales que le pasemos una cadena y
# nos devuelva el número de vocales (a,e,i,o,u) que tiene.
# Podemos utilizar la función contarLetra

def cuenta_letras(cadena,letra):
    cont=0
    cadena=cadena.lower()
    letra=letra.lower()
    # recorrer todas las letras de la cadena
    for caracter in cadena:
        # si la letra de la cadena es igual a la letra que nos pasan
        # contamos una aparición
        if caracter==letra:
            cont+=1
    return cont
def contarVocales(cadena):
    cont = 0
    # recorrer todas las letras de la cadena
    for caracter in cadena:
        # si la letra de la cadena es igual a la letra que nos pasan
        # contamos una aparición
        if caracter == "a" or caracter=="e" or caracter=="i" or caracter=="o" or caracter=="u":
            cont += 1
    return cont

def contarVocales2(cadena):
    aes=cuenta_letras(cadena,"a")
    es=cuenta_letras(cadena,"e")
    ies=cuenta_letras(cadena,"i")
    oes=cuenta_letras(cadena,"o")
    ues=cuenta_letras(cadena,"u")
    return aes+es+ies+oes+ues

def contarVocales3(cadena):
    vocales="aeiou"
    total=0
    for vocal in vocales:
        total+=cuenta_letras(cadena,vocal)
    return total

def contarVocales4(cadena):
    vocales="aeiouáéíóúüàèìòù"
    total=0
    for vocal in vocales:
        total+=cuenta_letras(cadena,vocal)
    return total

print(contarVocales4("Está El pingüino"))</pre>

# Crear una función recortar a la que le pasamos una cadena y dos
# números y nos devuelva una cadena 'recortada' por la izquierda y
# la derecha con los valores que le hemos pasado.
# Punto extra si comprobamos si la cadena se puede o no recortarCrear
# una función recortar a la que le pasamos una cadena y dos números y
# nos devuelva una cadena 'recortada' por la izquierda y la derecha con los valores que le hemos pasado. Punto extra si comprobamos si la cadena se puede o no recortar

def recortar(cadena,left,right):
    if left+right>len(cadena):
        return ""
    return cadena[left:-right]

print(recortar("abcdefghi",2,3))


# Crear una función  arrobar que nos cambie
# todas las 'a' minúscula por el símbolo '@'

def arrobar(cadena):
    return cadena.replace('a','@')

print(arrobar("mañana"))

# Crear una función invertir a la que le pasemos una cadena
# y nos la devuelva invertida: invertir("hola")->"aloh"

def invertir(cadena):
    return cadena[::-1] # operador slicing

def invertir2(cadena):
    res=""
    for letra in cadena:
        res=letra+res
    return res

nombre="Ana Pi"
print(nombre[1:6:2])
print(nombre[1:])
print(nombre[::-1])

print(invertir2("hola"))

Ejemplos funciones

some_string = 'Hello World'
print('Testing a String')
print(some_string[2])
print(some_string[2:5])
print(some_string[2:])
print(some_string[:-2])

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())
cadena="   hola que tal     "
print("|"+cadena+"|")
print("|"+cadena.strip()+"|")

clientes=["ana pi   ","PEDRO","JUAN perez    "]

for cliente in clientes:
    print("|"+cliente.strip().title()+"|")

cadena="hola que tal"

pos=cadena.find("pepe")
pos2=cadena.find("que")

print(pos,pos2)

pos3=cadena.find("a")
print(pos3)
pos4=cadena.find("a",pos3+1)
print(pos4)

cadena="Mañana cantara Sara"

pos=cadena.find("w")
while pos!=-1:
    print(pos)
    pos=cadena.find("a",pos+1)

Funciones de orden superior

# Funciones normales sin misterio
def cuadrado(numero):
    return numero**2
def cubo(numero):
    return numero**3

# Función que usa otra función como parámetro
def aplicar(funcion,numero):
    return funcion(numero)

print(aplicar(cubo,3))

# Esta función nos genera una función nueva dependiendo del parámetro
# Y la devuelve
def generar_funcion(exponente):
    def potencia(numero):
        return numero**exponente
    return potencia

micubo=generar_funcion(3)

micuadrado=generar_funcion(2)

print(micuadrado(5))
print(micubo(2))

# Python usa filter que es de orden superior
# Su primer parámetro es una función

lista=[1,2,8,3,4,5]
def aprobado(numero):
    return numero>=5
def suspendidos(numero):
    return numero<5
def impar(numero):
    return numero%2==1
res=list(filter(aprobado,lista))
print(res)
res=list(filter(impar,lista))
print(res)
res=list(filter(suspendidos,lista))
print(res)

def mitad(numero):
    return numero/2
res=list(map(mitad,lista))
print(res)

Soluciones ejercicios

# Crea una función llamada area_cuadrado que tome
# la longitud de un lado como argumento y devuelva el área del cuadrado.

def area_cuadrado(lado):
    if lado<=0:
        return 0
    return lado*lado # return lado**2

# Crea una función llamada promedio que tome tres números
# como argumentos y devuelva su promedio.

def promedio(num1,num2,num3):
    return(num1+num2+num3)/3

print(promedio(2,4,6))

# Crea una función factorial que calcule el factorial de un número entero dado. El factorial de un número n se calcula
# como el producto de todos los enteros positivos desde 1 hasta n.

def factorial(numero):
    resultado=1
    for i in range(1,numero+1):
        resultado*=i
    return resultado

def factorial2(numero):
    resultado=numero
    for i in range(2,numero):
        resultado*=i
    return resultado

def factorial3(numero):
    resultado=1
    for i in range(numero,1,-1):
        resultado*=i
    return resultado

def factorial4(numero):
    for i in range(2,numero):
        numero*=i
    return numero

print(factorial4(5))

# Crea una función cuenta_letras a la que le pasamos una cadena y una letra
# y nos devuelva cuantas veces aparece esa letra en la cadena

def cuenta_letras(cadena,letra):
    cont=0
    # recorrer todas las letras de la cadena
    for caracter in cadena:
        # si la letra de la cadena es igual a la letra que nos pasan
        # contamos una aparición
        if caracter==letra:
            cont+=1
    return cont

print(cuenta_letras("hola que tal estas","s"))

Funciones

# funciones
# Un fragmento de código que realiza algo y que se puede reutilizar
# Una manera de organizar código, de simplificar flujo de programa
# Tener las cosas centralizadas

def saludo(nombre="Desconocido"): # parámetro nombre
    print("Hola",nombre,"que tal estás. Yo muy bien.")
    print("Es importante aprender las funciones")
    print("Y estudiar")

saludo("Juan")
print("yo no")
saludo("Ana")
print("Yo tampoco")
saludo(15)


def mayor(a,b):
    if (a>b):
        print(a)
    else:
        print(b)

mayor(8,8)
mayor(1,89)
mayor(87,1)

# PURAS

# funciones
# Un fragmento de código que realiza algo y que se puede reutilizar
# Una manera de organizar código, de simplificar flujo de programa
# Tener las cosas centralizadas

# Esto sí es una función pura
def saludo(nombre="Desconocido"): # parámetro nombre
    return "Hola "+nombre+" que tal estás. Yo muy bien." # return nos sirve para devolver algo


resultado=saludo("Juan")
print(resultado)

# Funciones puras
# es una caja negra. Le paso parámetros y me devuelve resultados
# Sin interactuar con el entorno

def mayor(a,b):
    if (a>b):
        return a
    else:
        return b

num=mayor(23,232)

# Un programa que sume una lista de numeros solo si son pares

def es_par(numero):
    return numero % 2 == 0
def sumaPares(lista):
    total = 0
    for numero in lista:
        if es_par(numero): # ¿Por qué utilizar una función?
            total += numero
    return total

lista=[1,2,3,4,5,6]

print(sumaPares(lista))

# Crear una función que le pasemos tres numeros y nos devuelva el mayor

# el def y el nombre
# parametros
# codigo que resuelve el problema
# devolver el resultado
# probar

def mayor(a,b,c):
    if a>=b and a>=c:
        return a
    if b>=a and b>=c:
        return b
    return c

print(mayor(10,200,200))

Bucles anidados

# pintar un arbolito
for i in range(5):
    for j in range(i + 1):
        print("*", end=" ")
    print()

# Todas las tablas de multiplicaar
for j in range(1,11):
    print("Tabla de multiplicar del ",j)
    for i in range(1,11):
        print(f"{i} x {j} = {i*j}")

# Todos los números primos hasta el 100
for numero in range(2,100):
    es_primo=True
    for i in range(2,numero):
        if (numero % i==0):
            es_primo=False
            break
    if es_primo:
        print(numero, end=", ")

for i in range(2,20):
    numero=i
    while numero!=1:
    # Si el número es par (numero %2==0) dividirlo entre 2
        print(numero,end=", ")
        if numero%2==0:
            numero//=2 # numero=int(numero/2)
    # Si el número es impar multiplicarlo por 3 y sumarle 1
        else:
            numero=numero*3+1
    # lo imprimo
    print(1)

Soluciones ejercicio

# Pedir al usuario un número

numero=int(input("Introduce un número"))
# Hacemos un proceso hasta que el número sea 1
# Cuando sea uno hemos acabado

while numero!=1:
# Si el número es par (numero %2==0) dividirlo entre 2
    print(numero,end=", ")
    if numero%2==0:
        numero//=2 # numero=int(numero/2)
# Si el número es impar multiplicarlo por 3 y sumarle 1
    else:
        numero=numero*3+1
# lo imprimo
print(1)


# Pedir al usuario un número

numero=int(input("Introduce un número"))
# Hacemos un proceso hasta que el número sea 1
# Cuando sea uno hemos acabado
cadena=str(numero)+", "
while numero!=1:
# Si el número es par (numero %2==0) dividirlo entre 2

    if numero%2==0:
        numero//=2 # numero=int(numero/2)
# Si el número es impar multiplicarlo por 3 y sumarle 1
    else:
        numero=numero*3+1
    cadena+=str(numero)+", "
# lo imprimo
print(cadena[:-2])

Códigos while y for

# bucle while ejecuta mientras se cumpla una condicion

cont=1
numero=7
print(f"Tabla de multiplicar del {numero}")
while cont<=10:
    print(f"{cont} x {numero} = {cont*numero}")
    # Dentro del bucle while tengo que modificar algo de la condicion
    cont+=1

total=0
num=int(input("Introduce un numero (0 para salir) "))

while num!=0:
    total+=num
    num = int(input("Introduce un numero (0 para salir) "))
print("La suma total es",total)


import random

numero_secreto = random.randint(1, 100)
print(numero_secreto)
intentos = 0
intento=0
while intento != numero_secreto:
    intento = int(input("Intenta adivinar el número (entre 1 y 100): "))
    if intento<1 or intento>100:
        print('ERROR: Numeros entre 1 y 100')
        continue # Sáltate el resto de líneas y vuelve al principio

    intentos += 1
    if intento == numero_secreto:
        print(f"Felicitaciones, ¡adivinaste el número {numero_secreto} en {intentos} intentos!")
        break # Sal del bucle
    elif intento>numero_secreto-5 and intento<numero_secreto+5:
        print("Estás cerca")
    elif intento < numero_secreto:
        print("El número es mayor. Intenta de nuevo.")
    else:
        print("El número es menor. Intenta de nuevo.")

lista=[1,2,3,4,5,6,7]

for elemento in lista:
    print(elemento)

alumnos=["Ana","Juan","Eva","Pep"]

for alumno in alumnos:
    print(alumno)

cant="hola que tal"

for n in cant:
    print(n)

for i in range(len(alumnos)):
    print(alumnos[i])

for i in range(1,6):
    print(i)

for i in range(1, 6,2):
    print(i)

"""Escribe un programa que recorra una lista de números
 y calcule la suma de todos los números pares en la lista.
 También la media """

lista=[1,2,3,4,5,6,7,100,90,3]

suma=0
cont=0
for elemento in lista:

    print(elemento)
    if elemento%2==0:
        suma+=elemento
        cont+=1

print("Total",suma)
print("Media",suma/cont)

Código de hoy: if


edad = 17

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

    """
if edad<18:
    print("Eres menor de edad")
    print("Por lo tanto no puedes entrar a la discoteca")
    print("Cuando crezcas")
    if edad==17:
        print("Te falta poco")
"""
print("fin de programa")

sueldo=5000

if sueldo>600 and sueldo<1500:
    print('Sueldo bajo')
elif sueldo<3000:
    print('Sueldo medio')
else:
    print('Sueldo alto')

# Pido un sueldo y a) compruebo que sea legal
# b) si es menor de 2000 aplico un 15% de irpf
# c) si es mayor aplico un 25%

sueldo=int(input("introduce tu sueldo "))



if sueldo<1000:
    print('Sueldo ilegal')
else:
    print('Sueldo correcto. El sueldo neto es', end=' ')
    if sueldo<2000:
        print(sueldo*.85)
    else:
        print(sueldo*.75)
        print('Enhorabuena')
        print('Campeón')

    print('Donde estoy?') # Cuando el sueldo >=1000
print('Y yo?') # Siempre porque está sin ningún margen

edad = 25
tiene_licencia = False

# Combinación de condiciones con 'and'
if edad >= 18 and tiene_licencia:
    print("Puede conducir un automóvil.")
else:
    print("No puede conducir un automóvil.")

es_estudiante = False
es_empleado = False

# Combinación de condiciones con 'or'
if es_estudiante or es_empleado:
    print("Es estudiante o empleado.")
else:
    print("No es estudiante ni empleado.")"""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”."""

# Solicitar edad al usuario

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

# Comprobar si es menor o igual a 18 y en ese caso imprimir menor
if edad<=18:
    print("Eres menor de edad")
# Caso contrario imprimir mayor
else:
    print("Eres mayor 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."""

# Pedir dos numeros
a=int(input("Introduce el primer numero"))
b=int(input("Introduce el segundo numero"))

print(a,b)
# decir cual es el mayor
if a>b:
    print('El mayor es el primero')
if b>a:
    print('El mayor es el segundo')
# Si son iguales decir que son iguales
if a==b:
    print('Son iguales')

if a>b:
    print('El mayor es el primero')
elif b>a:
    print('El mayor es el segundo')
else:
    print('Son iguales')

if a==b:
    print('Son iguales')
elif b>a:
    print('El mayor es el segundo')
else:
    print('El mayor es el primero')

# Pedir un usuario y un password y si son 1234 1234 acceder

usuario=input("Introduce el usuario")
password=input("Introduce el password")

if usuario=='1234' and password=='1234':
    print ("P'alante")
else:
    print('No puedes entrar')

Solución ejercicios


"""Escribe un programa que tome una entrada del usuario como una
cadena que represente un número entero, conviértela a un entero y
luego multiplique ese número por 2. Finalmente, muestra el resultado."""

# pido un número
numero=input("Introduce un numero")
# lo convierto a entero
int_numero=int(numero)
# lo multiplico
int_numero=int_numero*2
# lo muestro
print(int_numero)

numero=int(input("numero"))
print(numero*2)

print(int(input("numero"))*2)

"""Crea un programa que tome un número decimal como entrada del usuario (por ejemplo, 3.14)
 y conviértelo en un entero. Luego, muestra el número entero resultante."""

numero=input("Dame un numero decimal")
dec_numero=float(numero)
int_numero=int(dec_numero)
print(int_numero)

print(int(float(input("Numero decimal"))))

"""Escribe un programa que tome una cadena de caracteres que
represente “True” o “False” (en minúsculas o mayúsculas)
como entrada del usuario, conviértela a un valor booleano
y luego muestre  la variable resultante."""

variable=input("Dame true o false")
bool_variable=variable=='True'
print(bool_variable)