Casos Python

Vamos a plantear una serie de ejercicios para practicar nuestro lenguaje de programación favorito, sea Python o cualquier otro que estemos aprendiendo. La mejor forma de mejorar es intentar resolver por nosotros mismos una gran cantidad de casos prácticos. Si fuera posible, interesaría resolverlos por varios métodos para ver que existen múltiples vías para llegar a obtener el resultado requerido.

Bloque I. Fundamentos de programación


Es conveniente utilizar funciones, siempre que sea posible, para estructurar el código de forma más adecuada e inteligible.

Comparar dos números

Pedir al usuario dos números y decir cuál es el mayor, el menor o si son iguales.

Comparar varias parejas de números

Pedir al usuario dos números y decir cuál es el mayor, el menor o si son iguales. Seguir pidiendo números hasta que se introduzca algún valor negativo o que no sea numérico.

Elevar al cuadrado

Mostrar en pantalla el cuadrado de todos los números del 1 al 100.

Listar números pares

Pedir al usuario dos números y mostrar en pantalla todos los números pares comprendidos entre ellos.

Media de una serie de números

Solicitar al usuario que introduzca números hasta que se llegue a introducir uno negativo, lo cual interrumpirá las peticiones. Mostrar en pantalla la suma y la media de los números positivos introducidos. Indicar cuántos valores introducidos son superiores a la media.

Calculadora

Pedir al usuario dos números válidos, si no son válidos seguir pidiendo valores. Efectuar con ellos la suma, resta, multiplicación, división, división entera, resto, y potencias.  Utilice control de errores para evitar el error de división entre cero.

Divisores de un número

Generar un número aleatorio entre 2 y 1.000 mostrando en pantalla todos sus divisores.

Comparar medias de aleatorios

Generar 12 números aleatorios entre 0 y 100 y calcular su media. Generar otros 12 números aleatorios entre 0 y 100 y calcular su media. Finalmente muestre en pantalla las medias de ambas series y diga cuál de las dos ha resultado mayor. Utilice funciones.

Tablas de multiplicar hasta 12×12

Generar y mostrar en pantalla todas las tablas de multiplicar desde la tabla del 1 hasta la tabla del 12. El último valor que se multiplicará será 12 × 12 = 144.

Frecuencia de caracteres

Pedir al usuario que escriba un párrafo de texto. Mostrar en pantalla cuantas veces aparece cada letra del alfabeto.

Calculadora de IVA

Programar dos casos para el cálculo del IVA (Impuesto sobre el Valor Añadido). El caso A calcula el precio con IVA dados el precio base y el porcentaje de IVA. El caso B calcula el precio base dados el precio con IVA y el porcentaje de IVA. Utilice funciones. Establezca un menú donde el usuario pueda elegir que caso desea resolver.

Edad

Establezca un procedimiento en el que el código toma la fecha del sistema e indicando su fecha de nacimiento le diga cuántos años tiene y cuantos días faltan para que llegue su próximo cumpleaños.

Comprobar si un número es primo

Genere e imprimir una lista con los mil primeros números primos, luego genere un número aleatorio entero entre 2 y 7.919. Muestre en pantalla el número aleatorio e indique si pertenece a la lista de los mil primeros números primos.

Números aleatorios con y sin repetición

Generar dos listas de 10 elementos cada una, con números enteros, aleatorios, entre 1 y 20, donde en una de ellas se pueden llegar a repetir y en la otra no se admiten repeticiones. Generar una tercera lista con todos los elementos que se repitan en ellas, pero no debe repetirse ningún elemento en la nueva lista.

Ordenar una lista

Generar una lista de números aleatorios. Ordenar la lista sin usar sort.

Función separa

Generar una lista de 15 elementos, con números enteros, aleatorios, entre -20 y 20. Cree una función que separe los elementos de la lista anterior en dos listas, por un lado, los números pares y por otro, los impares. Las nuevas listas tendrán sus elementos ordenados y sin repetición. Indique en cuál de las dos listas la suma de sus elementos es mayor.

Binario a decimal

Pedir al usuario que introduzca un número binario y convertirlo a decimal. Mostrar en pantalla también el modo de llegar a ese resultado. Por ejemplo, si el binario es 101011, entonces se ha de imprimir el proceso que es: 1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 43

Decimal a binario

Pedir al usuario que introduzca un número decimal y convertirlo a binario. Mostrar en pantalla también el modo de llegar a ese resultado. Como ejemplo se puede ver la siguiente imagen.

Suma de dos números para llegar al target

Generar un número entero aleatorio entre 2 y 20. A este número le llamaremos target. Generar una lista de números enteros entre -10 y 10. La lista puede tener desde un mínimo de dos elementos a un máximo de 6. La lista debe contener dos números que sumados nos den el target. El programa generará un target y una lista y verificará que se cumple la condición de la suma. En caso de que no se cumpla seguirá generando otro target y otra lista hasta conseguirlo. La solución debe ser única. Solo puede haber un par de números que sumados den el target. Como ejemplo se puede ver la siguiente imagen donde mostramos tres listas que cumplen la condición. En su caso, debe generar y mostrar cien listas que cumplan los requisitos pedidos.



Segundo mínimo en listas anidadas

Disponemos de la siguiente lista anidada [["Ana",1],["Raul",1],["Jose",9],["David",7],["Eva",8],["Felipe",4],["Héctor",9],["Isabel",4],["Susana",5]]. Estamos buscando los nombres que están asociados al segundo mínimo. Para esta lista, el procedimiento debería proporcionar como salida: Felipe, Isabel. Crear un procedimiento que genere listas anidadas similares a la del ejemplo, de longitud variable y que garanticen que existe el segundo mínimo. El programa mostrará en pantalla la lista generada y el nombre o nombres asociados con el segundo mínimo. Utilizar funciones.


Lista de impares

Generar números enteros aleatorios entre 10 y 99 (ambos incluidos) que se incorporen a una lista de longitud 17. Generar continuamente listas de este tipo hasta lograr una donde todos sus elementos sean impares y sin repetición. Imprimir la lista obtenida de forma ordenada de mayor a menor. Imprimir el tiempo que se ha tardado en lograr esa lista expresado en segundos con hasta 6 decimales





Bloque II. Programación Orientada a Objetos


El objeto persona

Crear la clase Persona con los atributos nombre, edad, profesión, altura, ciudad y otro de su elección. Crear un par de objetos Persona. Finalmente deseamos preguntar a cada persona su edad y su ciudad

El objeto auto

Crear la clase Car y dotarla de una serie de atributos y métodos. Crear tres o más automóviles y ordenarlos por su velocidad máxima que son capaces de alcanzar. Verificar los que están aparcados o circulando.

Objetos geométricos

Crear la clase Rectángulo con los atributos ancho, largo. Incluir en el método constructor los argumentos ancho y largo. Crear un método para calcular el área del rectángulo y otro para calcular su perímetro. Crear la clase Circulo con el atributo radio. Incluir en el método constructor el argumento radio. Crear un método para calcular el área del círculo y otro para calcular su perímetro. Para usar PI utilice math.pi. Crear dos objetos del tipo rectángulo y otros dos objetos del tipo circulo, proporcione valores aleatorios a sus parámetros y calcule sus superficies y perímetros redondeando a dos decimales.



Bloque III. Aplicaciones


Capitalización compuesta

Dado un capital inicial de 100.000 € y un tipo de interés del 6% anual calcular cómo evoluciona el capital durante una serie de años hasta el plazo que nos indique el usuario. Si el usuario, cuando se le pregunte, no indica plazo y pulsa Enter, tomar como plazo por defecto 10 años. Junto a cada capital indicar también los intereses devengados cada año. Mostrar en pantalla los importes redondeados a dos decimales y conseguir que las dos columnas queden alineadas al punto decimal.  Mostrar un gráfico que ilustre la evolución del capital a lo largo del tiempo.

Generar palabras

Generar palabras de 6 caracteres del tipo cvcvcv, donde c representa una consonante y donde v representa una vocal. Hacer una lista de varias palabras separadas por coma, y probar la lista en una página de dominios de internet para ver si existe alguno de estos libre. Ejemplo: casato.com

Gráfico histórico del IBEX

Descargar un archivo con formato csv de la página de Yahoo Finanzas con la cotización del IBEX o de otra fuente disponible. Crear un procedimiento que lea el fichero y finalmente obtenga un gráfico del histórico del cierre del IBEX. Tomar el periodo histórico más largo posible.

No hay comentarios:

Publicar un comentario