EJERCICIOS SELECCIONADOS
The Python Wookbook
Ben Stephenson
The Python Wookbook
Ben Stephenson
EJERCICIO 1 - Promedio
En este ejercicio, creará un programa que calcule el promedio de una colección de valores ingresados por el usuario. El usuario ingresará un valor negativo como valor centinela para indicar que no se proporcionarán más valores.
EJERCICIO 2 - Tabla de descuentos
Un comerciante minorista tiene un 60 por ciento de descuento en una variedad de productos descatalogados. Al minorista le gustaría ayudar a sus clientes a determinar el precio reducido de la mercancía al tener una tabla de descuentos impresa en el estante que muestre los precios originales y los precios después de que se haya aplicado el descuento. Escribe un programa que utiliza un bucle para generar esta tabla, que muestra el precio original, el monto del descuento y el nuevo precio para compras de 4,95 €, 9,95 €, 14,95 €, 19,95 € y 24,95 €. Asegúrese de que los montos de descuento y los nuevos precios se redondeen a 2 decimales cuando se muestren.
EJERCICIO 3 - Tabla de conversión de temperaturas.
Escriba un programa que muestre una tabla de conversión de temperatura para grados Celsius y grados Fahrenheit. La tabla debe incluir filas para todas las temperaturas entre 0 y 100 grados Celsius que sean múltiplos de 10 grados Celsius. Incluya títulos apropiados en sus columnas. La fórmula para convertir entre grados Celsius y grados Fahrenheit se pueden encontrar en Internet.
EJERCICIO 4 - No más céntimos.
Supongamos que el Banco Central Europeo decidiese eliminar las monedas de 1 y 2 céntimos de €. Ahora que los céntimos se han eliminado, los comercinates deben ajustar los totales para que sean múltiplos de 5 centimos cuando se pagan en efectivo (las transacciones con tarjeta de crédito y débito continúan cobrándose al céntimo). Si bien los minoristas tienen cierta libertad para hacer esto, la mayoría opta por redondear a la moneda de cinco céntimos más cercana.
Escriba un programa que lea los precios del usuario hasta que se ingrese una línea en blanco. Muestre el costo total de todos los artículos ingresados en una línea, seguido del monto adeudado si el cliente paga en efectivo en una segunda línea. El monto adeudado por un pago en efectivo debe redondearse al céntimo más cercano. Una forma de calcular el monto del pago en efectivo es comenzar determinando cuántos céntimos se necesitarían para pagar el total. Luego calcula el resto cuando este número de céntimos se divide por 5. Finalmente, ajusta el total hacia abajo si el resto es menos de 2.5. De lo contrario, ajuste el total hacia arriba.
Escribe un programa que calcule el perímetro de un polígono. Comienza leyendo las coordenadas x e y del primer punto en el perímetro del polígono indicado por el usuario. Luego continúe leyendo pares de valores hasta que el usuario ingrese una línea en blanco para la coordenada x. Cada vez que lea una coordenada adicional, debe calcular la distancia al punto anterior y agregarla al perímetro. Cuando se ingresa una línea en blanco para la coordenada x, su programa debe agregar la distancia desde el último punto hasta el primer punto del perímetro. Luego se debe mostrar el perímetro. Los valores de entrada y salida de muestra se muestran a continuación. Los valores mostrados entre asteriscos corresponden a respuestas del usuario.
Introduzca la primera coordenada x: **0**
Introduzca la primera coordenada y: **0**
Ingrese la siguiente coordenada x (en blanco para salir): **1**
Introduzca la siguiente coordenada y: **0**
Ingrese la siguiente coordenada x (en blanco para salir): **0**
Introduzca la siguiente coordenada y: **1**
Introduzca la siguiente coordenada x (en blanco para salir):
El perímetro de ese polígono es 3.41 unidades
Un zoológico en particular determina el precio de la entrada según la edad del visitante. Los visitantes menores de 2 años de edad se admiten sin cargo. Niños entre 3 y 12 años cuestan 14.00 €. Las personas mayores de 65 años (65 incluidos) pagan 18.00 €. La entrada para todos los demás clientes es de 23.00 €. Cree un programa que comience leyendo las edades de todos los invitados en un grupo del usuario, con una edad ingresada en cada línea. El usuario ingresará una línea en blanco para indicar que no hay más invitados en el grupo. Luego, su programa debe mostrar el coste de la entrada por categorías y para el grupo completo con un mensaje apropiado.
Un bit de paridad es un mecanismo simple para detectar errores en los datos transmitidos a través de una conexión poco confiable, como una línea telefónica. La idea básica es que se transmite un bit adicional después de cada grupo de 8 bits para que se pueda detectar un error de un solo bit en la transmisión.
Los bits de paridad se pueden calcular para paridad par o paridad impar. Si se selecciona paridad par, el bit de paridad que se transmite se elige de modo que el número total de bits uno transmitidos (8 bits de datos más el bit de paridad) sea par. Cuando se selecciona paridad impar, el bit de paridad se elige de modo que el número total de bits transmitidos sea impar.
Escriba un programa que calcule el bit de paridad para grupos de 8 bits ingresados por el usuario usando paridad par. Su programa debe leer cadenas que contengan 8 bits hasta que el usuario ingrese una línea en blanco. Después de que el usuario ingrese cada cadena, su programa debe mostrar un mensaje claro que indique si el bit de paridad debe ser 0 o 1. Pantalla un mensaje de error apropiado si el usuario ingresa algo que no sea 8 bits.
El valor de π se puede aproximar mediante la siguiente serie infinita mostrada en la imagen de abajo:
Escriba un programa que muestre 15 aproximaciones de π. La primera aproximación debe hacer uso únicamente del primer término de la serie infinita. Cada aproximación adicional mostrada por su programa debe incluir un término más en la serie, lo que la convierte en una mejor aproximación de π que cualquiera de las aproximaciones mostradas anteriormente.
# Si el número del jugador es divisible por 3, entonces el jugador dice fizz en lugar de su número.
# Si el número del jugador es divisible por 5, el jugador dice buzz en lugar de su número.
# Un jugador debe decir tanto fizz como buzz para los números que son divisibles por 3 y 5.
Cualquier jugador que no realice la sustitución correcta o dude antes de responder será eliminado del juego. El último jugador que queda es el ganador.
Escriba un programa que muestre las respuestas de los primeros 100 números en el juego Fizz-Buzz. Cada respuesta debe mostrarse en su propia línea.
Uno de los primeros ejemplos conocidos de cifrado lo utilizó Julio César. César necesitaba proporcionar instrucciones escritas a sus generales, pero no quería que sus enemigos para conocer sus planes si el mensaje caía en sus manos. Como resultado, desarrolló lo que más tarde se conoció como el cifrado César.
La idea detrás de este cifrado es simple (y como tal, no proporciona ninguna protección contra técnicas modernas de descifrado de códigos). Cada letra del mensaje original se desplaza en 3 plazas. Como resultado, A se convierte en D, B se convierte en E, C se convierte en F, D se convierte en G, etc.
Las últimas tres letras del alfabeto se enrollan hasta el principio: X se convierte en A, Y se convierte en B y Z se convierte en C. Los caracteres que no son letras no se modifican con el cifrar.
Escriba un programa que implemente un cifrado César. Permitir al usuario suministrar el mensaje y la cantidad del cambio, y luego mostrar el mensaje cambiado. Asegurarse de que su programa codifica letras mayúsculas y minúsculas. Su programa debe
También admite valores de desplazamiento negativos para que pueda usarse tanto para codificar mensajes como para decodificar mensajes.
Un string o cadena de texto es un palíndromo si es idéntica leída hacia adelante y hacia atrás. Por ejemplo, "ana", "rotor", "radar" y "seres" son ejemplos de palabras palindrómicas. Escriba un programa que lea una cadena del usuario y use un bucle para determinar si es un palíndromo o no. Muestre el resultado, incluido un mensaje de salida significativo.
Hay numerosas frases que son palíndromos cuando se ignora el espacio. Los ejemplos incluyen "Allí ves Sevilla", "A mí me mima" y "Somos o no somos", entre muchos otros. Extienda su solución al Ejercicio 11 para que ignore el espaciado al determinar si una cadena es un palíndromo o no. Para un desafío adicional, amplíe aún más su solución para que también ignore los signos de puntuación y trate las letras mayúsculas y minúsculas como equivalentes.
En este ejercicio, creará un programa que muestre una tabla de multiplicar que muestre los productos de todas las combinaciones de números enteros desde 1 por 1 hasta 10 por 10 inclusive. Su tabla de multiplicar debe incluir una fila de etiquetas en la parte superior. que contenga los números del 1 al 10. También debe incluir etiquetas en el lado izquierdo que contengan los números del 1 al 10. El resultado esperado del programa se muestra a la derecha.
Para completar este ejercicio, probablemente le resulte útil poder imprimir un valor sin pasar a la siguiente línea. Esto se puede lograr agregando end="" como último argumento a su declaración de impresión. Por ejemplo, print("A") mostrará la letra A y luego bajará a la siguiente línea. La sentencia print("A", end="") mostrará la letra A sin pasar a la línea siguiente, lo que hará que la siguiente sentencia print muestre su resultado en la misma línea que la letra A.
EJERCICIO 14 - Máximo Común Divisor.
El máximo común divisor de dos números (n y m) es la cifra más alta por la que todos ellos se pueden dividir sin dejar resto en la división, es decir siendo números enteros, sin decimales.
Inicialice d al menor de m y n.
Si bien d no divide uniformemente a m o d no divide uniformemente a n, es decir el resto de las divisiones no es cero:
Disminuir el valor de d en 1
Cuando se cumpla que d divide uniformemente a m y a n, es decir el resto de las divisiones es cero:
Se Informa que d es el máximo común divisor de n y m
Escriba un programa que lea dos números enteros positivos del usuario y utilice este algoritmo para determinar y reportar su máximo común divisor.
EJERCICIO 15 - Binario a Decimal.
Escriba un programa que convierta un número binario (base 2) a decimal (base 10). Su programa debe comenzar leyendo el número binario del usuario como una cadena. Entonces debe calcular el número decimal equivalente procesando cada dígito en el número binario. Finalmente, su programa debería mostrar el número decimal equivalente con un mensaje apropiado.
EJERCICIO 16 - Entero máximo.
Este ejercicio examina el proceso de identificación del valor máximo en una colección de números enteros. Cada uno de los números enteros será seleccionado aleatoriamente entre los números entre 1 y 100. y algunos de los enteros entre 1 y 100 puede que no estén presentes.
Tómate un momento y piensa en cómo resolverías este problema en papel. Mucha gente comprobaría cada número entero en la secuencia y se preguntaría si el número que están considerando actualmente es mayor que el número más grande que han visto previamente. Si es así, entonces olvidan el número máximo anterior y recuerdan el número actual como el nuevo número máximo. Este es un enfoque razonable, y dará como resultado la respuesta correcta cuando el proceso se realice con cuidado. Si usted estaba realizando esta tarea, ¿Cuántas veces esperaría que necesitara actualizar el valor máximo y recordar un nuevo número?
Si bien podemos responder a la pregunta planteada al final del párrafo anterior usando la teoría de la probabilidad, la exploraremos simulando la situación. Crear un programa que comienza seleccionando un número entero aleatorio entre 1 y 100. Guarde este entero como el número máximo encontrado hasta el momento. Después de que el número entero inicial haya sido seleccionado, genera 99 números enteros aleatorios adicionales entre 1 y 100. Verifique cada número entero tal como se genera para ver si es mayor que el número máximo encontrado hasta ahora. Si es así, entonces su programa debería actualizar el número máximo encontrado y cuente el hecho de que realizó una actualización. Muestra cada número entero después de generarlo. Incluir una notación con aquellos números enteros que representen un nuevo máximo.
Después de haber mostrado 100 números enteros, su programa debería mostrar el máximo valor encontrado, junto con el número de veces el valor máximo fue actualizado durante el proceso.