Ejercicio 5.7.1. Escribir un programa que reciba una a una las notas del usuario, preguntando a cada paso si desea ingresar más notas, e imprimiendo el promedio correspondiente.
Ejercicio 5.7.2. Escribir una función que reciba un número entero
k
e imprima su descomposición en factores primos.
Ejercicio 5.7.3. Manejo de contraseñas
- Escribir un programa que contenga una contraseña inventada, que le pregunte al usuario la contraseña, y no le permita continuar hasta que la haya ingresado correctamente.
- Modificar el programa anterior para que solamente permita una cantidad fija de inten-tos.
- Modificar el programa anterior para que después de cada intento
agregue una pausa cada vez mayor, utilizando la función
sleep
del módulotime
. - Modificar el programa anterior para que sea una función que devuelva si el usuario ingresó o no la contraseña correctamente, mediante un valor booleano (True o False).
Ejercicio 5.7.4. Utilizando la función randrange
del módulo
random
, escribir un programa que obtenga un número aleatorio secreto,
y luego permita al usuario ingresar números y le indique sin son
menores o mayores que el número a adivinar, hasta que el usuario
ingrese el número correcto.
Ejercicio 5.7.5. Algoritmo de Euclides
Implementar en python el algoritmo de Euclides para calcular el
máximo común divisor de dos números n
y m
, dado por los siguientes
pasos.
- Teniendo
n
ym
, se obtiener
, el resto de la división entera dem/n
. - Si
r
es cero,n
es el mcd de los valores iniciales. - Se reemplaza
m ← n
,n ← r
, y se vuelve al primer paso.
Hacer un seguimiento del algoritmo implementado para los siguientes
pares de números: (15,9)
; (9,15)
; (10,8)
; (12,6)
.
Ejercicio 5.7.6. Potencias de dos.
Escribir una función es_potencia_de_dos
que reciba como parámetro
un número natural, y devuelva True
si el número es una potencia de
2
, y False
en caso contrario.
Escribir una función que, dados dos números naturales pasados como
parámetros, devuelva la suma de todas las potencias de 2
que hay
en el rango formado por esos números (0
si no hay ninguna potencia
de 2
entre los dos). Utilizar la función es_potencia_de_dos
,
descripta en el punto anterior.
Ejercicio 5.7.7. Números perfectos y números amigos
Escribir una función que devuelva la suma de todos los divisores de
un número n
, sin incluirlo.
Usando la función anterior, escribir una función que imprima los
primeros m
números tales que la suma de sus divisores sea igual
a sí mismo (es decir los primeros m
números perfectos).
Usando la primera función, escribir una función que imprima las
primeras m parejas de números (a,b)
, tales que la suma de los
divisores de a
es igual a b
y la suma de los divisores de b
es
igual a a
(es decir las primeras m
parejas de números amigos).
Proponer optimizaciones a las funciones anteriores para disminuir el tiempo de ejecución.
Ejercicio 5.7.8. Escribir un programa que le pida al usuario que
ingrese una sucesión de núme-ros naturales (primero uno, luego otro, y
así hasta que el usuario ingrese -1
como condición de salida). Al
final, el programa debe imprimir cuántos números fueron ingresados, la
suma total de los valores y el promedio.
Ejercicio 5.7.9. Escribir una función que reciba dos números como parámetros, y devuelva cuántos múltiplos del primero hay, que sean menores que el segundo.
- Implementarla utilizando un ciclo
for
, desde el primer número hasta el segundo. - Implementarla utilizando un ciclo
while
, que multiplique el primer número hasta que sea mayor que el segundo. - Comparar ambas implementaciones: ¿Cuál es más clara? ¿Cuál realiza menos operaciones?
Ejercicio 5.7.10. Escribir una función que reciba un número natural e imprima todos los números primos que hay hasta ese número.
Ejercicio 5.7.11. Escribir una función que reciba un dígito y un número natural, y decida numéricamente si el dígito se encuentra en la notación decimal del segundo.
Ejercicio 5.7.12. Escribir una función que dada la cantidad de ejercicios de un examen, y el porcentaje necesario de ejercicios bien resueltos necesario para aprobar dicho examen, revise un grupo de examenes. Para ello, en cada paso debe preguntar la cantidad de ejercicios resueltos por el alumno, indicando con un valor centinela que no hay más examenes a revisar. Debe mostrar por pantalla el porcentaje correspondiente a la cantidad de ejercicios resueltos respecto a la cantidad de ejercicios del examen y una leyenda que indique si aprobó o no.