viernes, 30 de junio de 2023

50+ Desafios de Python para principiantes Parte 1

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.

 Parte 2 del Artículo

Desafío 1: División y raíz cuadrada Escriba una función llamada dividir_o_cuadrado que tome un argumento (un número) y devuelva la raíz cuadrada del número si es divisible por 5, o su resto si no es divisible por 5. Por ejemplo, si pasa 10 como argumento, entonces su función debería devolver 3.16 como la raíz cuadrada.

Solución Propuesta: En este desafío, usamos declaraciones condicionales para crear dos condiciones. Si alguna de esas condiciones se evalúa como verdadera, se ejecutará ese bloque de código. La declaración if verifica si el número es divisible por 5, si lo es, calculamos la raíz cuadrada del número. La declaración else se ejecutará solo si el número no es divisible por 5. En ese caso, el bloque else devolverá el resto de la división.

 

 

Desafío adicional: Valor más largo Escriba una función llamada valor_más_largo que tome un diccionario como argumento y devuelva el primer valor más largo del diccionario. Por ejemplo, el siguiente diccionario debería devolver "manzana" como el valor más largo.

frutas = {'fruta': 'manzana', 'color': 'verde'}

 Solución Propuesta:Usamos la función max() para devolver el valor máximo de los valores del diccionario. La función max tiene un parámetro clave. Como buscamos el primer valor más largo, pasamos len al parámetro clave. Si no pasamos len al parámetro clave, devolverá verde como el valor más largo, que es lexicográficamente más grande que manzana.

 


Desafío 2: Cadenas a enteros Escriba una función llamada convert_add que tome una lista de cadenas como argumento, las convierta a enteros y sume la lista. Por ejemplo, ["1", "3", "5"] debe convertirse en [1, 3, 5] y sumarse a 9.

Solución Propuesta:En este desafío, usamos el encasillamiento para convertir las cadenas de la lista en números enteros. Una vez que se convierten, usamos la función de suma incorporada para sumar los números enteros en la lista b.


 Si no desea utilizar la función incorporada sum(), puede crear un segundo bucle for en la función que iterará a través de list2 de enteros. Agregamos todos los elementos de lista2 a la variable cuenta.

 

Desafío adicional: Nombres duplicados Escriba una función llamada verificar_duplicados que tome una lista de cadenas como argumento. La función debe verificar si la lista tiene duplicados. Si hay duplicados, la función debería devolver los duplicados. Si no hay duplicados, la función debería devolver "sin duplicados". Por ejemplo, la lista de frutas a continuación debería devolver "manzana" como un duplicado, y la lista de nombres debería devolver "sin duplicados".

frutas = ['manzana', 'naranja', 'plátano', 'manzana']

nombres = ['Yoda', 'Moisés', 'Joshua', 'Mark']

Solución Propuesta: A continuación, usamos un bucle for y una declaración condicional para iterar sobre una lista y verificar si hay elementos en la lista que aparecen más de una vez. Usamos el método de lista count() para contar cada elemento. Una vez que encontramos ese artículo, lo devolvemos.

 


Desafío 3: Verificación de registro Escriba una función llamada check_registrar que verifique cuántos estudiantes hay en la escuela. La función toma un diccionario como parámetro. Si el estudiante está en la escuela, el diccionario dice "sí". Si el estudiante no está en la escuela, el diccionario dice "no". Su función debe devolver el número de estudiantes en la escuela. Utilice el diccionario a continuación. Su función debe devolver 3.

registrarse = {' Miguel':'sí','Juan ': 'no', ' Pedro':'sí ', 'María': 'sí'}

 

Otra forma de hacerlo

 Desafío adicional:

Nombres en minúsculas nombres = [" kerry ", " dickson ", "John", "Mary", "carol", "Rose", " adam "]

Se le da una lista de nombres arriba. Esta lista se compone de nombres de letras minúsculas y mayúsculas. Su tarea es escribir un código que devuelva una tupla de todos los nombres de la lista que solo tienen letras minúsculas. Su tupla debe tener nombres ordenados alfabéticamente en orden descendente. Usando la lista anterior, su código debería devolver: (' kerry ', ' dickson ', 'carol', ' adam ')

Solución Propuesta: Para este desafío, tenemos que usar dos funciones: la función ordenada y la función tupla. La función sorted ordenará la lista en orden descendente. Para ordenar una lista en orden descendente, establezca inversa en Verdadero.

 


Desafío 4: Solo flotantes Escriba una función llamada only_floats , que tome dos parámetros a y b, y devuelva 2 si ambos argumentos son flotantes, devuelve 1 si solo un argumento es flotante y devuelve 0 si ninguno de los argumentos es flotante. Si pasa (12.1, 23) como argumento, su función debería devolver un 1.

Solución Propuesta: En este desafío, usamos la función type() y declaraciones condicionales. La función type() se usa para obtener el tipo de nuestros argumentos. También usamos los operadores and , and or para comparar los dos argumentos.

 


Desafío adicional: Índice de la palabra más larga Escriba una función llamada word_index que tome un argumento, una lista de cadenas, y devuelva el índice de la palabra más larga de la lista. Si no hay una palabra más larga (si todas las cadenas tienen la misma longitud), la función debería devolver cero (0). Por ejemplo, la siguiente lista debería devolver 2.

palabras1 = ["Odio", "remordimiento", "venganza"] Y esta lista a continuación, debería devolver cero (0)

palabras2 = ["Amor", "Odio"]

 Solución Propuesta: Lo primero que hacemos es comprobar si todas las cadenas de la lista tienen la misma longitud. Si es así, devolvemos 0. Si no lo son, buscamos la palabra más larga usando la función len () y la función max(). Una vez que lo encontramos, buscamos su índice usando el método index.

 


 Desafío 5: Mi descuento Cree una función llamada mi_descuento . La función no acepta argumentos, pero le pide al usuario que ingrese el precio y el descuento (porcentaje) del producto. Una vez que el usuario ingresa el precio y el descuento, calcula el precio después del descuento. La función debe devolver el precio después del descuento. Por ejemplo, si el usuario ingresa 150 como precio y 15% como descuento, su función debería devolver 127.5.

Solución Propuesta: En este código, nuestra función no toma parámetros. Le pedimos al usuario que ingrese usando la función input(). Dado que la entrada está en formato de cadena, debemos convertirla en un número entero mediante la función int() antes de poder calcular el descuento. La salida en este código supone un precio de entrada de 150 y un descuento del 15%.

 


Desafío adicional: tupla de sexo estudiantil Usted trabaja para una escuela y su jefe quiere saber cuántos estudiantes femeninos y masculinos están matriculados en la escuela. La escuela ha guardado a los estudiantes en una lista. Su tarea es escribir un código que cuente cuántos hombres y mujeres hay en la lista. Aquí hay una lista a continuación: estudiantes = ['Masculino', 'Femenino', 'femenino', 'masculino', 'masculino', 'masculino', 'femenino', 'masculino', 'Femenino', 'Masculino', ' Femenino', 'Masculino', 'femenino'] Su código debe devolver una lista de tuplas. La lista anterior debería devolver: [('Masculino',7), ('femenino',6)]

Solución Propuesta: Lo primero que debe hacer para este desafío es asegurarse de convertir todas las cadenas en letras minúsculas, utilizando el método lower(). Entonces, creamos una nueva lista con nombres convertidos a minúsculas. Luego buscamos machos y hembras en la lista. Usamos el método de conteo para contar cuántas veces aparece cada uno en new_list . Luego combinamos el sexo y el número de veces que aparece en la lista en una tupla (sexo, nueva_lista.cuenta (sexo). Luego agregamos las tuplas a la lista de conteo de estudiantes. Observe que usamos la instrucción break después de agregar, para asegúrese de que solo iteramos a través de la lista una vez.

 


Desafío 6: Generador de nombres de usuario Escriba una función llamada nombre_usuario que genere un nombre de usuario a partir del correo electrónico del usuario. El código debe pedirle al usuario que ingrese un correo electrónico, y el código debe devolver todo antes del signo @ como su nombre de usuario. Por ejemplo, si alguien ingresa ben@gmail.com, el código debe devolver ben como su nombre de usuario.

Solución Propuesta: La función split() divide el correo electrónico en el elemento @. Una vez que se divide el correo electrónico, podemos usar la indexación para acceder a los elementos del correo electrónico. La parte que queremos usar para el nombre de usuario se encuentra en el índice 0, por lo que usamos [0] en nuestro código para acceder a él.

 


Desafío extra: Cero en ambos extremos Escribe una función llamada código puesto a cero que toma una lista de números como argumento. El código debe poner a cero (0) el primer y último número de la lista. Por ejemplo, si la entrada es [2, 5, 7, 8, 9], su código debería devolver [0, 5, 7, 8, 0].

Solución Propuesta: Este desafío requiere un poco de corte. Simplemente acceda al primer y último elemento de la lista y reemplácelos con ceros.

 


Desafío 7: Un rango de cadenas Escriba una función llamada rango_cadenas que tome un solo número y devuelva una cadena de su rango. Los caracteres de cadena deben estar separados por puntos (.). Por ejemplo, si pasa 6 como argumento, su función debería devolver "0.1.2.3.4.5".

Solución Propuesta: En este código, utilizando la comprensión de listas, creamos una lista a partir del rango. Sin embargo, para usar el método join() en la lista, debemos asegurarnos de que los elementos de nuestra lista estén en formato de cadena. Usamos la función str() para convertir x en una cadena antes de llamar a la función join() para unir la cadena con puntos.

 


Desafío adicional: diccionario de nombres Se le da una lista de nombres y se le pide que escriba un código que devuelva todos los nombres que comienzan con "S". Su código debe devolver un diccionario de todos los nombres que comienzan con S y cuántas veces aparecen en el diccionario. Aquí hay una lista a continuación:

nombres = [" Joseph","Nathan ", "Sasha", "Kelly", "Muhammad", "Jabulani", "Sera”, "Patel", "Sera”] Su código debe devolver: {“Sasha”: 1 , “Sera”: 2}

Solución Propuesta: En este desafío, se nos pide que creemos un diccionario de nombres que comiencen con "S". Entonces, primero, debemos encontrar todos los nombres en la lista que comienzan con "S", y luego debemos devolver estos resultados en un diccionario. La manera fácil de encontrar los nombres es usar el método startwith (). Este método devolverá todos los nombres que comiencen con el elemento dado. En el siguiente código, creamos un diccionario vacío, luego buscamos todos los elementos que comienzan con "S". Usando el método del diccionario (actualizar), actualizamos el diccionario vacío con los resultados de nuestra búsqueda.

 


Segundo método Otro método sería usar la clase Counter del módulo de colecciones. La clase Counter realiza un seguimiento de los elementos y sus recuentos y almacena los resultados en un diccionario. Devuelve el nombre del elemento como clave y su cuenta como valor. Vea el código a continuación:

 

 

Desafío 8: Par e impar Escribe una función llamada par_impar que tenga un parámetro y tome una lista de números como argumento. La función devuelve la diferencia entre el número par más grande de la lista y el número impar más pequeño de la lista. Por ejemplo, si pasa [1, 2, 4, 6] como argumento, la función debería devolver 6 - 1= 5.

Solución Propuesta: En este desafío, usamos el operador de módulo para encontrar pares e impares en la lista. Luego usamos las funciones max() y min() para devolver el número máximo y el número mínimo.

 

 

Desafío adicional: lista de números primos Escribe una función llamada números_primos . Esta función le pide al usuario que ingrese un número (un entero) como argumento y devuelve una lista de todos los números primos dentro de su rango. Por ejemplo, si el usuario ingresa 10, su código debe devolver [2, 3, 5, 7] como números primos.

Un número primo es un número que tiene dos factores, el 1 y él mismo. Los números primos comienzan desde 2. Para este desafío, usamos la función de rango para encontrar el rango del número.

 


Desafío 9: Mayor número impar Cree una función llamada mayor_impar que tome una cadena de números y devuelva el mayor número impar de la lista. Por ejemplo, si pasa '23569' como argumento, su función debería devolver 9. Utilice la comprensión de listas.

Solución Propuesta: Al usar la comprensión de listas, usamos un bucle for y una declaración if para devolver una lista de números impares. Aquí, puedes usar el operador de módulo (%). El operador de módulo devuelve el resto de una división. El operador devuelve un cero si el resto es cero. Un número es impar si devuelve un resto cuando se divide por 2. En este código, usamos la declaración if para devolver solo números que no son divisibles por 2. La función max() devolverá el mayor número impar de la lista.

 


Desafío extra: ceros hasta el final Escribe una función llamada zeros_last . Esta función toma una lista como argumento. Si una lista tiene ceros (0), los moverá al final de la lista y mantendrá el orden de los otros números en la lista. Si no hay ceros en la lista, la función debería devolver la lista original ordenada en orden ascendente. Por ejemplo, si pasa [1, 4, 6, 0, 7, 0, 9] como argumento, su código debería devolver [1, 4, 6, 9, 0, 0]. Si pasa [2, 1, 4, 7, 6] como argumento, su código debería devolver [1, 2, 4, 6, 7].

Solución Propuesta: El desafío consiste en comprender la indexación. El primer paso es identificar números distintos de cero en la lista. Una vez que los identificamos, los movemos al final de la lista mientras incrementamos el índice en 1. Luego llenamos los lugares restantes con los ceros en la lista.

 

 

Desafío 10: Ocultar mi contraseña Escriba una función llamada hide_password que no tome parámetros. La función toma una entrada (una contraseña) de un usuario y devuelve una contraseña oculta. Por ejemplo, si el usuario ingresa "hola" como contraseña, la función debe devolver "****" como contraseña y decirle al usuario que la contraseña tiene 4 caracteres.

Solución Propuesta: En este desafío, podemos usar la función input() para obtener información de un usuario. Luego usamos la función len () para obtener la longitud de la contraseña. Usamos el operador de multiplicación para multiplicar cada elemento de la cadena con '*'.

 


Desafío adicional: Separador de mil Su nueva empresa tiene una lista de cifras guardadas en una base de datos. El problema es que estos números no tienen separador. Los números se guardan en una lista con el siguiente formato: [1000000, 2356989, 2354672, 9878098]. Se le ha pedido que escriba un código que convierta cada uno de los números de la lista en una cadena. Luego, su código debe agregar una coma en cada número como un separador de mil para facilitar la lectura. Cuando ejecuta su código en la lista anterior, su resultado debe ser: ['1,000,000', '2,356,989', '2,354,672', '9,878,098'] Escriba una función llamada convert_numbers que tomará un argumento, la lista de números anterior .

La forma más fácil de hacer esto es usar el método de formato.

 


 

 


0 comments:

Publicar un comentario