# 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"))
Categoría: Python
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)