sábado, 1 de julio de 2023

50+ Desafios de Python para principiantes Parte 3

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

Desafío 21: Lista de tuplas Escribe una función llamada hacer_tuplas que tome dos listas iguales y las combine en una lista de tuplas. Por ejemplo, si la lista a es [1,2,3,4] y la lista b es [5,6,7,8], su función debería devolver [(1,5), (2,6), (3, 7), (4,8)].

Solución Propuesta: La forma más sencilla de solucionar este problema es utilizar la función zip() integrada en Python. La función combina las dos listas en pares de tuplas. Usamos las funciones list() y tuple() para asegurarnos de que las tuplas estarán en una lista.

 

Desafío adicional: número par o promedio Escriba una función llamada par_o_promedio que le pida al usuario que ingrese cinco números. Una vez que el usuario haya terminado, el código debe devolver el número par más grande de los números ingresados. Si no hay un número par en la lista, el código debe devolver el promedio de los cinco números.

Solución Propuesta: En este desafío, creamos dos listas vacías. En la primera lista ( avg_num ), agregamos todos los números del usuario; en la otra lista, solo ingresamos números pares ( even_number ). Luego, el código verifica la lista de números pares para ver si está vacía; si está vacío, el código va a la lista avg_number y calcula el promedio.

 


 Desafío 22: Agregue Under_Score Cree tres funciones. El primero, llamado add_hash , toma una cadena y agrega un hash (#) entre las palabras. La segunda función, llamada add_underscore elimina el hash (#) y lo reemplaza con un guión bajo ("_"). La tercera función, llamada remove_underscore , elimina el guión bajo y lo reemplaza con nada. Si pasa "Python" como argumento para las tres funciones, y las llama al mismo tiempo como: print( remove_underscore ( add_underscore ( add_hash ('Python')))) debería devolver "Python".

Solución Propuesta: Para este desafío, debe usar el método string() y el método join() para agregar el hash (#). Luego usa otro método de cadena, replace(), para reemplazar el hash con un guión bajo (_), y también usamos el método replace() para reemplazar el guión bajo con nada

 


Desafío 23: Calculadora simple Crea una calculadora simple. La calculadora debe poder realizar operaciones matemáticas básicas: sumar, restar, dividir y multiplicar. La calculadora debe recibir información de los usuarios. La calculadora debería poder manejar ZeroDivisionError , NameError y ValueError .

Solución Propuesta: Esta es una calculadora simple que realiza operaciones aritméticas simples. Hemos utilizado el módulo de operador para las operaciones matemáticas. Hemos agregado los bloques try y except para asegurarnos de manejar algunas excepciones. Hay tantas maneras de hacer una calculadora. Es posible que lo hayas hecho diferente o incluso mejor.

 


Desafío adicional: multiplicar palabras s = "amar, vivir y reír" Escribe una función llamada multiplicar_palabras que tome una cadena como argumento y multiplique la longitud de cada palabra de la cadena por la longitud de otras palabras de la cadena. Por ejemplo, la cadena anterior debería devolver 240: amar (4), vivir (4) y (3), reír (5). Sin embargo, su función solo debe multiplicar palabras con todas las letras en minúsculas. Si una palabra tiene una letra mayúscula, debe ignorarse. Por ejemplo, la siguiente cadena:

s = "Odio guerra amor Paz" debe devolver 12 – guerra (3) amor (4). Hate and Peace se ignorarán porque tienen al menos una letra mayúscula.

 Solución Propuesta:


Desafío 24: Calorías promedio Escriba una función llamada promedio_calorías que calcule la ingesta calórica promedio de un usuario. La función debe pedirle al usuario que ingrese su ingesta de calorías durante cualquier número de días, y una vez que presione "Listo", debe calcular y devolver la ingesta promedio.

Solución Propuesta: Esta simple calculadora de calorías promedio se ejecutará hasta que el usuario ingrese "hecho", luego calculará las calorías promedio. La entrada del usuario se agrega a la variable de puntuaciones. Usamos la función sum() y la función len () para calcular el promedio de calorías en la lista de puntajes. El bucle while es lo que mantiene la función en ejecución hasta que sucede algo que hace que se salga del bucle. Una vez que presionamos "hecho", el bucle se detiene con la instrucción break.

 


Desafío adicional: crear una lista anidada Escriba una función llamada nested_lists que tome cualquier número de listas y cree una lista anidada de dos dimensiones. Por ejemplo, si pasa las siguientes listas como argumentos: [1, 2, 3, 5], [1, 2, 3, 4], [1, 3, 4, 5]. Su código debería devolver: [[1, 2, 3, 5], [1, 2, 3, 4], [1, 3, 4, 5]]

 Solución Propuesta: Lo primero es que pasamos * args como parámetro para asegurarnos de que nuestra función pueda tomar cualquier número de argumentos. Luego creamos una lista vacía para agregar las listas. Usamos el rango para realizar un seguimiento de las listas de números pasadas como argumentos. Usamos el ciclo for para iterar a través de las listas y agregarlas a la lista vacía.

 


Desafío 25: Todos iguales Escriba una función llamada todos_iguales que tome un argumento, una cadena, una lista o una tupla, y verifique si todos los elementos son iguales. Si los elementos son los mismos, la función debería devolver True. Si no, debería devolver False. Por ejemplo, ["Mary", "Mary", "Mary"] debería devolver True.

Solución Propuesta: Estamos utilizando la función integrada all(). Si todos los elementos de iterable son verdaderos, la función all() devolverá Verdadero.

 


También podemos usar la función enumerate() incorporada. La función de enumerar devolverá un elemento y su índice. Podemos usar eso para verificar si todos los elementos en la cadena, tupla o lista son iguales al elemento que se encuentra en el índice 0.


Desafío extra: invertir una cadena str1 = "el amor es real"

Escriba una función llamada read_backwards que tome una cadena como argumento y la invierta. La cadena anterior, por ejemplo, debería devolver: "real is love the ".

Solución Propuesta: En este desafío, dividimos la cadena en espacios en blanco usando el método de división. Agregamos las cadenas a la lista vacía (lista x) e invertimos las palabras usando [::-1]. Luego obtenemos las palabras de la lista y las unimos usando el método de unión.

 


Desafío 26: Ordenar palabras Escriba una función llamada ordenar_palabras que tome una cadena de palabras como argumento, elimine los espacios en blanco y devuelva una lista de letras ordenadas en orden alfabético. Las letras se separarán por comas. Todas las letras deben aparecer una vez en la lista. Esto significa que ordena y elimina los duplicados. Por ejemplo, "vida amorosa" debería devolverse como ['e, f, i , l, o, v'].

Solución Propuesta: En este desafío, usamos el método replace() para eliminar los espacios en blanco entre las palabras. Una vez que se eliminan los espacios, usamos el ciclo for para iterar a través de la cadena y agregar los elementos a la variable list1. Usamos el operador not-in en list1 para asegurarnos de no agregar duplicados a la lista. Usamos el método join() para agregar comas entre los elementos de la cadena.

 

 

Desafío extra: Longitud de las palabras s = 'Hola, mi nombre es Richard' Escribe una función llamada string_length que tome una cadena de palabras (palabras y espacios) como argumento. Esta función debería devolver la longitud de todas las palabras de la cadena. Devuelve los resultados en forma de diccionario. La cadena anterior debería devolver: {'Hola': 2, 'mi': 2, 'nombre': 4, 'es': 2, 'Richard': 7}

Solución Propuesta: Este desafío requiere que creemos un diccionario de longitudes de palabras. La palabra será la clave y la longitud de la palabra será el valor. A continuación, usamos la función dividir para dividir la cadena en una lista de cadenas. Luego iteramos a través de la lista y actualizamos nuestro diccionario vacío (dict1) con las palabras (clave) y la longitud de las palabras (valor).

 


Desafío 27: Números únicos Escribe una función llamada números_únicos que tome una lista de números como argumento. Su función va a encontrar todos los números únicos en la lista. Luego sumará los números únicos. Calcularás la diferencia entre la suma de todos los números de la lista original y la suma de los números únicos de la lista. Si la diferencia es un número par, su función debería devolver la lista original. Si la diferencia es un número impar, su función debería devolver una lista con números únicos únicamente. Por ejemplo, [1, 2, 4, 5, 6, 7, 8, 8] debería devolver [1, 2, 4, 5, 6, 7, 8, 8].

Solución Propuesta: Para este desafío, una vez que agregamos los números únicos a list2, usamos la función sum() para sumar los números en list1 y list2. Usamos el operador de módulo (%) para verificar si la diferencia entre los dos números es un número par o un número impar. Si es un número par, devolvemos lista1, de lo contrario, devolvemos lista2.

 


Desafío extra: diferencia de dos listas Escribe una función llamada diferencia que tome dos listas como argumentos. Esta función debe devolver todos los elementos que están en la lista a pero no en la lista b y todos los elementos en la lista b pero no en la lista a. Por ejemplo: lista1 = [1, 2, 4, 5, 6] lista2 = [1, 2, 5, 7, 9] debería devolver: [4, 6, 7, 9] Utilice la comprensión de listas en su función.

Solución Propuesta: Usamos dos declaraciones de comprensión de listas: una para encontrar elementos en arr1 que no están en arr2 y otra para encontrar elementos en arr2 que no están en arr1.

 


Desafío 28: Índices de retorno Escribe una función llamada index_position . Esta función toma una cadena como parámetro y devuelve las posiciones, o índices, de todas las letras minúsculas de la cadena. Por ejemplo, " LovE " debería devolver [1, 2].

Solución Propuesta: Usando la función enumerar (), podemos recuperar el índice o la posición del elemento. El método isupper () devuelve True si una letra de la cadena está en mayúscula. Una vez que encontramos la letra en mayúscula, queremos que su índice se agregue a la lista de idex .

 


 

Desafío extra: Número más grande Escribe una función llamada número_más_grande que tome una lista de números enteros y reorganice los dígitos individuales para crear el número más grande posible. Por ejemplo, si pasa lo siguiente como argumento, list1 = [3, 67, 87, 9, 2]. Su código debe devolver el número en este formato exacto: 9,877,632 como el número más grande.

Solución Propuesta: Este desafío requiere que usemos algunos métodos de cadena, como quitar y reemplazar, para convertir el número en un entero. Aquí está el código completo a continuación:

 


Desafío 29: Figura del medio Escribe una función llamada figura_del_medio que tome dos parámetros, ay b. Los dos parámetros son cadenas. La función une las dos cadenas y encuentra el elemento central. Si la cadena combinada tiene un elemento intermedio, la función debe devolver el elemento; de lo contrario, debería devolver "sin figura intermedia". Use "hacer el amor" como argumento para a, y "no guerras" como argumento para b. Su función debe devolver "e" como elemento central. Deben eliminarse los espacios en blanco.

Solución Propuesta: El primer paso en este desafío es concatenar las dos cadenas y encontrar la longitud de la nueva cadena usando la función len (). Recuerde eliminar los espacios en blanco entre las subcadenas. Para encontrar el elemento del medio, usamos la división de piso (//). La división del piso se redondeará al entero más cercano, que es 4. El elemento que se encuentra en la posición 4, o índice 4, es el elemento central. Solo las cadenas con longitudes impares devolverán un elemento intermedio.

 


Desafío 30: Nombre más repetido Escribe una función llamada nombre_repetido que encuentre el nombre más repetido en la siguiente lista.

nombre = ["Juan", "Pedro", "Juan", "Pedro", "Jones", "Pedro"]

Solución Propuesta: El módulo de colecciones tiene una clase Counter() que podemos usar para encontrar el elemento más común de una lista. Lo usamos aquí y devuelve a Peter, que aparece en la lista tres veces.

 

 

Desafío extra: ordenar por apellido Trabajas para una escuela local en tu área. La escuela tiene una lista de nombres de estudiantes guardados en una lista. La escuela te ha pedido que escribas un programa que tome una lista de nombres y los clasifique alfabéticamente. Los nombres deben ordenarse por apellidos. Aquí hay una lista de nombres: ["Beyoncé Knowles", "Alicia Keys", "Katie Perry", "Chris Brown", "Tom Cruise”] Su código no solo debe ordenarlos alfabéticamente; también debe cambiar los nombres (el el apellido debe ser el primero). Así es como debería verse la salida de su código:

['Brown Chris', 'Cruise Tom', 'Keys Alicia', 'Perry Katie', 'Knowles Beyoncé'] Escribe una función llamada sorted_names .

 Solución Propuesta:


Desafío 31: Palabra más larga Escribe una función que tenga un parámetro y tome una lista de palabras como argumento. La función devuelve la palabra más larga de la lista. Asigne un nombre a la función palabra_más_larga . La función debe devolver la palabra más larga y el número de letras de esa palabra. Por ejemplo, si pasa ['Java', 'JavaScript', 'Python'], su función debería devolver [10, JavaScript] como la palabra más larga.

Solución Propuesta: En este desafío, usamos el método append() para agregar las cadenas y su longitud a la lista b. Si imprime la lista b, obtendrá una lista anidada de cada palabra y su longitud. La función max() encuentra la palabra más larga en la lista b.

 


Desafío extra: Crear usuario Escriba una función llamada create_user . Esta función le pide al usuario que ingrese su nombre, edad y contraseña. La función guarda esta información en un diccionario. Por ejemplo, si el usuario ingresa Pedro como su nombre, 18 como su edad y "amor" como su contraseña, la función debe guardar la información como: {"nombre": "Pedro", "edad": "18", "contraseña": "amor"} Una vez que se guarda la información, la función debe mostrar al usuario, "Usuario guardado. Inicie sesión"

Luego, la función debe pedirle al usuario que vuelva a ingresar su nombre y contraseña. Si el nombre y la contraseña coinciden con lo que está guardado en el diccionario, la función debería mostrar "Inicio de sesión exitoso". Si el nombre y la contraseña no coinciden con lo que está guardado en el diccionario, la función debería imprimir "Contraseña o nombre de usuario incorrectos, inténtelo de nuevo". La función debe seguir ejecutándose hasta que el usuario ingrese los detalles de registro correctos.

Solución Propuesta: En este desafío, creamos un diccionario vacío y usamos el método de actualización para actualizarlo con información del usuario. Luego usamos un bucle while para garantizar que el código se ejecute hasta que se ingresen los detalles de usuario correctos.

 


0 comments:

Publicar un comentario