08-09-2021, 08:33 PM
Estimados, buenas tardes.
Estoy haciendo algunos ejercicios en la web, pero no tengo acceso a ningun recurso de consultas, asi que recurro al foro a ver si alguien me hecha una mano...
Sucede que para un numero n debo encontrar la potencia de 2 cuyo resultado se acerque (pero no supere) al numero n.
Es decir, si tengo n = 16, la maxima potencia de 2 seria 4 donde 2 elevado a la potencia 4 daria 16.
Para esto necesito un bucle, en mi caso use For, pero sucede que mi codigo recorre todo el bucle, pero no siempre me da el resultado deseado.
Copio y pego lo que he hecho a ver si alguien detecta el error.
def exponente(n):
n= int(n)
for i in range(n):
print("para i = ",i)
if i**2<=n:
result=i
else:
i=i+1
return(result)
print(exponente(16))
---**** ---- el resultado de los dos print es:
para i = 0
para i = 1
para i = 2
para i = 3
para i = 4
para i = 5
para i = 6
para i = 7
para i = 8
para i = 9
para i = 10
para i = 11
para i = 12
para i = 13
para i = 14
para i = 15
3
Desde ya quedo muy agradecido!!!
Estoy haciendo algunos ejercicios en la web, pero no tengo acceso a ningun recurso de consultas, asi que recurro al foro a ver si alguien me hecha una mano...
Sucede que para un numero n debo encontrar la potencia de 2 cuyo resultado se acerque (pero no supere) al numero n.
Es decir, si tengo n = 16, la maxima potencia de 2 seria 4 donde 2 elevado a la potencia 4 daria 16.
Para esto necesito un bucle, en mi caso use For, pero sucede que mi codigo recorre todo el bucle, pero no siempre me da el resultado deseado.
Copio y pego lo que he hecho a ver si alguien detecta el error.
def exponente(n):
n= int(n)
for i in range(n):
print("para i = ",i)
if i**2<=n:
result=i
else:
i=i+1
return(result)
print(exponente(16))
---**** ---- el resultado de los dos print es:
para i = 0
para i = 1
para i = 2
para i = 3
para i = 4
para i = 5
para i = 6
para i = 7
para i = 8
para i = 9
para i = 10
para i = 11
para i = 12
para i = 13
para i = 14
para i = 15
3
Desde ya quedo muy agradecido!!!