4. Ciclos I#
(★☆☆, ★★☆, ★★★) Esta notación indica la dificultad de cada ejercicio, de menor a mayor.
-
★☆☆ ¿Cuál es la principal diferencia de funcionamiento entre un ciclo
while
y unfor
? -
★☆☆ En ciertos casos resulta necesario interrumpir abruptamente un programa cuando queda atrapado en un ciclo infinito. ¿Cómo puede interrumpirse un programa corriendo desde la terminal? Pruebe interrumpir el siguiente programa (no lo corra antes de saber cómo terminar un programa).
-
★☆☆ Escriba un programa que imprima los números pares del 0 al 100.
-
★☆☆ Escriba un programa que imprima en pantalla los números que son a la vez múltiplos de 7 y 23 (por ejemplo, 161 es múltiplo de ambos, 21 es múltiplo de 7 pero no de 23 y 46 es múltiplo de 23 pero no de 7).
- Escribir un programa que pida al usuario dos números
A
yB
e imprima en la pantalla todos los números múltiplos de, a la vez, 7 y 23, en el intervalo [A
,B
). - Escribir un programa que pida al usuario cuatro números
A
,B
,C
, yD
e imprima en la pantalla todos los números múltiplos de, a la vez,C
yD
, en el intervalo [A
,B
).
- Escribir un programa que pida al usuario dos números
-
★☆☆ Escriba un programa que imprima el producto entre dos números haciendo una suma repetida (sin utilizar el operador de multiplicación * del lenguaje de programación).
-
★☆☆ La suma de Gauss permite hallar el resultado de sumar los números naturales entre 1 y n, es decir: 1 + 2 + … + (n - 1) + n. Escriba un programa que compute esta suma (iterando) y que tenga como entrada el número n. Luego verifique si el resultado es correcto comparándolo con la forma cerrada de acuerdo a la siguiente ecuación:
\[ \sum_{k = 1}^{n} k = \frac{n(n + 1)}{2} \] -
★☆☆ Escriba un script que imprima el factorial de un número (entero).
¿Qué es el factorial de un número?
El factorial de 0 se define como 1, es decir: 0! = 1. Para todo otro \(n > 0\), el factorial se define como:
\[ n! = \Pi_{i = 1}^{n} i \]Por ejemplo, para \(n \geq 6\):
\[ n! = 1 \cdot 2 \cdot 3 \cdot \cdots \cdot (n - 2) \cdot (n - 1) \cdot n \] -
★☆☆ Escriba un programa que imprima el número combinatorio para un par de números n, k.
¿Qué es un número combinatorio?
Dados 2 números n y k, si n >= 0 y k <= n, el número combinatorio se define como:
\[ \left(\frac n k\right) = \frac{n!}{k!(n - k)!} \] -
★☆☆ Escriba un programa que calcule una aproximación a la función exponencial, sin utilizar la función exponencial de python. La función exponencial,
exp(x)
, se puede aproximar como:\[e^x \approx \sum_{n = 0}^{N} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots + \frac{x^N}{N!}\]donde
e
, el número de Euler, es aproximadamente igual a2.718281828459045
,x
es la variable de entrada yN
la cantidad de términos a sumar (cuánto más grande seaN
, mejor será la aproximación). Para probar el programa implementado, suponga una entradax=0.5
y pruebe distintos valores deN
. Compare los resultados cone ** x
. -
★☆☆ Escriba un programa que le pida al usuario ingresar 10 números enteros y que imprima el mayor número impar de los ingresados. De no haber ingresado ningún número impar, que imprima un mensaje para dar aviso.
-
★★☆ Escriba un programa que imprima los números primos entre \(0\) y \(N\), donde \(N\) es un parámetro definido al principio del programa.
-
★★☆ Escriba un programa que tome un número entero entre \(0\) y \(100\) provisto por el usuario e imprima en la consola un mensaje indicando si el número es primo o no. Si el número no es un entero entre \(0\) y \(100\), que imprima un mensaje indicando que el número ingresado no es entero entre \(0\) y \(100\).
-
★☆☆ Escriba un programa que imprima \(K\) números equiespaciados entre dos números arbitrarios \(N\) y \(M\).
Nota
Equiespaciados refiere a que la debemos dividir el segmento comprendido entre \(N\) y \(M\) en \(K\) partes iguales.
-
★☆☆ Implemente un programa que imprima en pantalla una tabla de conversión de grados Fahrenheit a Celsius. Parametrice el programa de modo tal que el usuario pueda definir el valor de temperatura (en Fahrenheit) inicial, final y el paso entre valores convertidos que se mostrarán en la tabla. Ejemplo:
inicial=-2.4
,final=7.5
ysep=0.1
. Imprima dicha tabla en pantalla indicando en la primera columna los grados Fahrenheit y en la segunda los Celsius. -
★☆☆ La secuencia de Fibonacci se define de la siguiente manera:
\[F_0 = 0\]\[F_1 = 1\]\[F_n = F_{n-1} + F_{n-2}\]Entonces los primeros números de la secuencia son: \(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, \ldots\)
Escriba un programa que imprima \(N\) números de la secuencia de Fibonacci, donde \(N\) es un parámetro definido al principio del programa.
-
★☆☆ Escriba un programa que calcule la raíz cúbica de un número utilizando ciclos. Si el número no es un cubo perfecto, que imprima el resultado aproximado con un mensaje aclaratorio, en caso contrario simplemente escribir el resultado.
Ayuda
Se puede probar con todos los enteros empezando desde el 0 y detenerse cuando el cubo del número sea mayor o igual que el número ingresado.
-
★★☆ Escriba un programa que juegue al “Piedra, Papel o Tijera” contra el humano.
Elección aleatoria entre 3 opciones
Para generar una elección aleatoria entre 3 valores posibles se puede usar una lista con los valores y usar la función
random.choice(lista)
importando el módulorandom
conimport random
. -
★☆☆ Escriba un programa que recorra el siguiente diccionario e imprima las claves de cuyo valor es mayor a \(10\).
-
★☆☆ Escriba un programa que busque el mínimo de la siguiente lista e imprima su valor.
-
★☆☆ Escriba un programa que dado un valor, imprima la posición en la que se encuentra en la siguiente lista.
-
★★☆ Escriba un programa que dadas las siguientes listas, las sume elemento a elemento e imprima el resultado.
-
★★★ Escriba un programa para jugar al Mastermind contra la computadora. El juego consiste en que la computadora genera un número de 4 cifras distintas y el jugador debe adivinarlo. Para ello, el jugador debe ingresar un número de 4 cifras distintas. La computadora le responderá con una pista, indicando cuántas cifras del número ingresado por el jugador son correctas y están en la posición correcta y cuántas cifras del número ingresado por el jugador son correctas pero están en la posición incorrecta. El juego termina cuando el jugador adivina el número.
Ejemplo
Supongamos que la computadora genera el número 1234.
- Si el jugador ingresa el número 5678, la computadora debe responder con la pista 0, 0 (ninguna cifra es correcta).
- Si el jugador ingresa el número 5671, la computadora debe responder con la pista 0, 1 (solo la cifra 1 es correcta pero está en la posición incorrecta).
- Si el jugador ingresa el número 5612, la computadora debe responder con la pista 0, 2 (las cifras 1 y 2 son correctas pero están en la posición incorrecta).
- Si el jugador ingresa el número 5613, la computadora debe responder con la pista 0, 2 (las cifras 1 y 3 son correctas pero están en la posición incorrecta).
- Si el jugador ingresa el número 5614, la computadora debe responder con la pista 1, 1 (la cifra 1 es correctas pero están en la posición incorrecta y la cifra 4 es correcta y bien posicionada).
- Si el jugador ingresa el número 5234, la computadora debe responder con la pista 3, 0 (las cifra 2, 3 y 4 son correctas y están en la posición correcta).
- Si el jugador ingresa el número 1234, la computadora debe responder con la pista 4, 0 (todas las cifras son correctas) y el juego termina.
Generación de números aleatorios para con 4 cifras distintas
Para generar números aleatorios se puede tener una lista de números del 0 al 9 y usar la función
random.choice(lista)
importando el módulorandom
conimport random
. Se debe remover el numero elegido de la lista para que no se repita al seleccionar la siguiente cifra. -
★★★ Suponga que tiene dos dados, asumiendo en ambos la misma probabilidad de ocurrencia por cada número (1/6). El juego consiste en dos participantes que, por turno, deben tirar los dos dados simultáneamente y seguir las siguientes reglas:
- Si ambos dados salen con diferente número (ej: 3 y 6), se suman y se le asigna ese valor como puntaje al jugador. Luego pasa a jugar el siguiente participante.
- Si ambos dados salen con el mismo número (ej: 4 y 4), se suman y se le asigna ese valor como puntaje al jugador, pero en este caso el jugador puede volver a tirar, de manera tal que el nuevo puntaje se acumule con el anterior, concluyendo su turno al sacar los dos números distintos (caso 1).
El jugador que haya obtenido mayor puntaje será el ganador de la mano.
Implemente el juego en forma interactiva, para 2 participantes.
Tip
Para simular el lanzamiento de datos, pida a cada usuario que presione una tecla cuando deba arrojar los dados.
Generación de números aleatorios para dados
Para generar números aleatorios de 1 a 6 puede usar la función
random.randint(1,6)
importando el módulorandom
conimport random
.