A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Enumeraci贸n exhaustiva

12/31
Recursos

Aportes 293

Preguntas 40

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

A punta de enumeraci贸n exhaustiva Dr Strange se puso a ver en que futuro los vengadores ganaban a Thanos

Diagrama de flujo:

Relaciono mi c贸digo y como veo que varios estamos interesados en medir el tiempo de ejecuci贸n, este script tambi茅n imprime el tiempo que se demora ejecutando:

import time

tiempo_inicial = time.time()

objetivo = int(input('Escoge un entero: '))
respuesta = 0

while respuesta**2 < objetivo:
    print(respuesta)
    respuesta += 1

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no tiene una raiz exacta')

print(f'El programa demor贸 {time.time() - tiempo_inicial} segundos ')

Aqu铆 el resultado:

Para no tener que estar escribiendo lo mismo cada vez que compilemos en consola, les dejo los pasos para configurar Visual Studio y lo haga autom谩tico.

En este video lo explica a detalle: https://www.youtube.com/watch?v=9Hh6fqieReE

Este es el famoso metodo llamado 鈥淔uerza Bruta鈥, es el peor algorithmo de todos, aunque el tiene razon al decir que las computadoras tienen un gran poder de computo, imagina si tienes que hacer esa consulta miles de veces en un minuto, ahi es donde en CS, se mira la manera de utilizar mejores algoritmos para mejorar los tiempos y recursos del sistema, basado en parametros de 鈥淭ime Complexity鈥 y 鈥淪pace Complexity鈥

En seguridad inform谩tica, existe un tipo de ataque llamado de 鈥渇uerza bruta鈥, en el que un atacante trata de ingresar a un sistema probando TODAS las contrase帽as posibles hasta que logra ingresar al sistema. Pr谩cticamente es un algoritmo de enumeraci贸n exhaustiva en todo su esplendor.
Por eso muchos sitios implementaron medidas de seguridad para cuando alguien trata muchas veces de logearse con un mismo usuario.

While, hasta que la condicion deje de ser verdadera
For, hasta que la condicion sea falsa

Enumeraci贸n exhaustiva
Tambi茅n llamado 鈥渁divina y verifica鈥 donde simplemente generamos todas las posibilidades. T茅cnicamente este no es un algoritmo eficiente, sin embargo, dependiendo del universo de posibilidades puede ser que sea el mas adecuado, ya que las computadoras actuales son muy rapidas y por lo tanto la eficiencia de nuestro programa no es relevante, por lo tanto siempre ten en mente este tipo de algoritmo como uno de los primeros en implementar.

Vamos a crear un ejemplo de enumeraci贸n exhaustiva buscando la ra铆z cuadrada exacta de un numero.

objetivo = int(input('Escoge un entero: '))

# Inicializamos respuesta como 0
respuesta = 0

# Mientras respuesta^2 sea menor que nuestro numero objetivo.
while respuesta**2 < objetivo:
    respuesta += 1  # Respuesta aumentara en 1.

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')

else:
    print(f'{objetivo} no tinene una raiz cuadrada exacta')

Qu茅 hermoso es todo esto!!! A煤n sigo sin entenderlo jaja

Cuidado con la enumeraci贸n exhaustiva:


Aunque es cierto que las computadoras son bien r谩pidas, estas tienen un l铆mite.

Prueben con este n煤mero: 134724234304. Ver谩n que no lo har谩 en segundos, se tomar谩 algunos minutos llegar a que es: 367048. 驴Por qu茅?

Porque el ordenador se hace m谩s lento al calcular a partir de las 1010 iteraciones, volvi茅ndose 1 segundo el tiempo de c谩lculo de 1011, 10 el de 10**12, y as铆 sucesivamente.

Es un caso extremo pero que da la moraleja que cuando las cosas escalan exponencialmente, S铆 es necesario optimizar.
Espero que les sirva para m谩s adelante. Salu2

Me est谩 gustando mucho el curso
.

El algoritmo es ineficiente pero las computadoras son muy rapidas.
es un algoritmo ineficiente pero EFICAZ.

Hallazgo de raiz cuadrada exacta por ennumeracion exhaustiva
Por favor digite un numero: 1000000000000
1000000 es la raiz cuadrada exacta de 1000000000000

hizo un millon de intentos y se demoro 1 segundo!!!

Esta chevere este python jejej no lo habia usado pero es muy intuitivo

objetivo = int(input('Ingrese un numero para verificar si tiene raiz='))

raiz = -1

for i in range(objetivo):
    if i*i== objetivo:
        raiz = i
        break
    elif i*i>objetivo:
        break
        


if raiz != -1:
    print(f'La raiz del numero {objetivo}, es {raiz}')
else:
    print(f'El numero {objetivo}, no tiene raiz')```

No comparto esta forma de 鈥榩ensar computacionalmente鈥, decir que no importa que el algoritmo sea ineficiente porque las maquinas son cada vez mas r谩pidas es un error, imagina que esta aplicaci贸n corre en un servidor donde muchos usuarios est谩n usando esos algoritmos; siempre debemos escribir programas eficientes. David no es un experto en el tema, simplemente realiz贸 un curso antes de dictar esta otro curso.



objetivo = int (input('Escoge un numero entero: '))

respuesta = 0

while respuesta**2 < objetivo:

    print(respuesta)

    respuesta += 1 

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta} ')

else:
      print(f'{objetivo} no tiene una raiz cuadrada exacta ')


A prueba de errores si introduces un valor de tipo float o string:

Algoritmo de fuerza bruta 馃槑

Les comparto un ejemplo de ra铆z c煤bica, simplemente cambiamos el 2 por el 3 y modificamos la impresi贸n de texto.

El codigo utilizando la nomenclatura vista en el curso basico de python, anterior a este

Les recomiendo este v铆deo para entender sobre los algoritmos
https://www.youtube.com/watch?v=U3CGMyjzlvM

Excelente explicaci贸n.

muchas gracias

Lo borre luego de verlo en la clase, para escribirlo por mi cuenta nuevamente y entenderlo. Ac谩 se los dejo.
Creo que el Print(respuesta) fue lo que me ayudo a verlo desde una mejor perspectiva.

objetivo = int(input('Ingresa un numero entero'))
respuesta = 0

while respuesta**2 < objetivo:
    print(respuesta)
    respuesta += 1

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')

else:
    print(f'{objetivo} no tiene una raiz exacta')```

Ac谩 mi ejercicio, a帽ad铆 al aviso de cuando la ra铆z cuadrada no sea exacta el resultado:

import math
num = int (input(('Escriba un n煤mero: ')))
raiz = 0

while raiz**2 < num:
    raiz += 1
    #print(raiz)

if raiz**2 == num:
    print(f'{num} tiene Ra铆z cuadrada exacta, es = {raiz}')
else:
    print(f'{num} no tiene ra铆z cuadrada exacta, su raiz cuadrada es = {math.sqrt(num)}')```
response = True

while response == True:
    objetive = int(input('Escoge un entero: '))
    respuesta = 0
    
    while respuesta**2 < objetive:
        print(respuesta)
        respuesta += 1


    if respuesta**2 == objetive:
        print(f'La raiz cuadrada de {objetive} es {respuesta}')

    else:
        print(f'El {objetive} no tiene una raiz cuadrada exacta')

    
    print('         驴Desea continuar?')
    print('             SI = 1')
    print('             NO = 2')
    option = int(input(': '))

    if option == 1:
        response = True

    else:
        response = False

Lo hice de esta forma

objetivo = int(input('Ingrese un numero entero'))
resultado = 1
while resultado <= objetivo:
    if resultado**2 == objetivo:
        print(f'la raiz cuadrada es: {resultado}')
    resultado+=1
    if resultado == objetivo:
        print('No se encontraron raices cuadradas')```

D贸nde profundizo m谩s sobre el tema

probar todo hasta que la encuentres, excelente frase

vscode es IDE?

Que incre铆ble ejemplo, me encanto esta clase.

## Esta programa permita calcular la Raiz Cuadrada exacta de cualquier numero, y podemos visualizar el proceso##
objetivo = int(input('Escoge un entero: '))
resultado = 0
while resultado**2 < objetivo:
    print(resultado, 'X', resultado,'=',resultado**2)
    resultado += 1
if resultado**2 == objetivo:
    print(f'la raiz de  {objetivo} es {resultado}')
else:
 print(f'{objetivo} No tienes raiz Cuadrada Perfecta')```

Se me ocurri贸 colocar un numero s煤per grande, ya ha pasado 4 minutos y aun no da respuesta

Consejo!!
entender bien como funciona este algoritmo es escencial para entender las siguientes clases 馃槈

La numeraci贸n exhaustiva es lo m谩s b谩sico dentro de los algoritmos

Yo con mi MacBook 2015

Muy interesante este tema de enumeraci贸n exhaustiva y utilizar print para ver que esta haciendo la maquina muchas gracias por los tips.

Recuerdo que cuando estaba en la universidad utilice muchas veces un m茅todo similar para tomar medidas con sensores, donde se deb铆an tomar cientos e incluso miles de medidas por segundo y analizarlas, y el pc lo hacia sin problema, es impresionante el poder y la velocidad que tienen los computadores hoy en d铆a!

Otra forma:

import math


def main():
    number = int(input('write number: '))
    if(math.sqrt(number) % 1 == 0):
        print('square root')
    else:
        print('no square root')


if __name__ == "__main__":
    main()

tuve que sentarme a leer la l贸gica detenidamente pregunt谩ndome el porque de cada cosa cuando lo entendi fue como :

Este ser铆a el tiempo en que se tardo en obtener la ra铆z cuadrada de 108638929:

Cabe mencionar que estoy trabajando con una raspberry pi4 de 8 GB de RAM. Puede variar dependiente de las caracter铆sticas del equipo. Pero como lo menciona el profesor, las computadoras actuales son muy muy r谩pidas.

De esta manera lo entend铆.
Ingreso: 5
CICLO
respuesta = 0
1x1= 1
2x2= 4
3x3= 9 (Me paso, me quedo con el anterior)
respuesta = 2

SI (2X2) ES IGUAL A 5
si
print(鈥渞espuesta鈥)
no
print(鈥淣o es exacta鈥)

Buena clase profe, quer铆a dejar clarada una cosa que me estuvo dando problemas a la hora de entender el c贸digo de esta clase. En el loop while, la condici贸n dice que mientras la respuesta al cuadrado sea menor al objetivo, se le sumar谩 1 a la respuesta. Aqu铆 la cuesti贸n, por qu茅 la respuesta llega a ser 4 si respuesta al cuadrado es IGUAL y no menor a objetivo. Pues cuando el bucle while evalua la condici贸n cuando la respuesta es 3, en esa iteraci贸n se le suma 1 a la respuesta y esta queda en 4, por eso aunque cuando la respuesta el 4 y esta elevada al cuadrado no cumple la condici贸n del while, la variable respuesta ya vale 4. Espero haberme explicado lo suficientemente bien 馃槂

Es como el algoritmo de 鈥渘o s茅 nada, vamos a ver qu茅 sale鈥. 馃槃

Excelente ejemplo y algoritmo!

Exc introduccion a los algoritmos.

Gracias.

Cree esto que por medio de la fuerza bruta, encuentra cualquier password que le ingreses, esta bassado en un codigo creado en el curso basico de python.

Era esc茅ptico frente a la eficiencia del algoritmo, pero despu茅s de una que otra prueba not茅 que s铆 es bastante eficiente.

p. ej. En mi c贸digo import茅 el modulo time para calcular el tiempo de ejecuci贸n, tambi茅n random para obtener un n煤mero aleatorio realmente grande y math, 煤nicamente con el prop贸sito de densificar un poco el programa.


El n煤mero aleatorio est谩 comprendido entre 3^(25) o 847.288.609.443 y 3^(30) o 205.891.132.094.649. Es decir, es un n煤mero realmente grande, pero sorprendentemente a la computadora no le va a tomar m谩s de 3 s determinar si tiene o no una ra铆z cuadrada exacta. 馃く

Note: Hasta lo que he podido ver el l铆mite al momento de crear un programa de Python estar谩 limitado por nuestro propio conocimiento de matem谩ticas en general.

Agregue algo de texto para comprende mejor la numeraci贸n exhaustiva.

objetivo = int(input('Escoge un entero: '))
respuesta = 0

while respuesta**2 < objetivo:
    print(f'{respuesta} al cuadrado es {respuesta**2}, que es menor a {objetivo}')
    respuesta +=1

if respuesta**2 == objetivo:
    print(f'La ra铆z cuadrada de {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no cuenta con una ra铆z cuadrada exacta')
#Enumeraci贸n exhaustiva
objetivo = int(input('Escoge un entero: ')) #Encontrar la raiz cuadrada de un numero
respuesta = 0

while respuesta**2 < objetivo: #Mientras el cuadrado de un numero sea menor que el objetivo
    print(respuesta) #Di el numero actual
    respuesta += 1 #Agregale uno al numero actual

if respuesta**2 == objetivo: #Si se encuentra raiz cuadrada exacta
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')  #Imprime la oracion siguiente con las variables objetivo y respuesta
else: #Si no tiene variable exacta
    print(f'{objetivo} no tiene una raiz cuadrada exacta') #Imprime lo anterior```
#variables en la memoria
objetivo = int(input('escoge un entero:'))
respuesta = 0

#mientras el valor de 'respuesta al cuadrado' es menor que 'objetivo', sumar 1 al valor 'respuesta
while respuesta**2 < objetivo:
    respuesta += 1

#si 'respuesta al cuadrado' es igual a objetiv, ejecutar print
if respuesta**2 == objetivo:
    print(f'la raiz cuadrada de {objetivo} es {respuesta}')

#de otra forma, ejecutar este print
else:
    print(f'{objetivo} no tiene raiz cuadrada')```

Ire realizando este ejercicio con cada script que escriba en adelante, me ayuda mucho a comprenderlo y si necesito revisarlo de nuevo se me hace mucho mas facil

Existen diferentes algoritmos para encontrar soluciones a problemas y uno de estos es la enumeraci贸n exhaustiva. Este se refiere a probar uno por uno todos los pasos para poder encontrar la respuesta correcta. Es una manera de poder encontrar la soluci贸n, pero una de las m谩s ineficientes ya que estas probando uno por uno. Lo bueno es que las computadoras hoy en d铆a son tan potentes que problemas s煤per complejos que requieran un mont贸n de iteraciones se pueden realizar en cuesti贸n de segundos. Una prueba es el siguiente c贸digo:

import time


objetivo = int(input("Escoge un entero: "))
respuesta = 0

tiempo_inicial = time.time()


while respuesta**2 < objetivo:
    respuesta += 1

if respuesta**2 == objetivo:
    print(f"La raiz cuadrada de {objetivo} es {respuesta}")
else:
    print(f"{objetivo} no tiene raiz cuadrada exacta")

print(f"El programa demor贸 {time.time() - tiempo_inicial} segundos")```

Que buena explicaci贸n, como tip para los que vamos empezando es muy buena pr谩ctica imprimir los valores que va tomando la variable para entender como funciona el c贸digo 馃槂 es una de mis pr谩cticas favoritas cuando trato de entender alg煤n c贸digo nuevo

Ensayo y error!

muy bueno

este es mi aporte, lo hice multiplicando el mismo numero para quitar el ** 2

objetivo = int(input(f'escoge un entero: '))
respuesta = 0 

while respuesta * respuesta < objetivo:
    print(respuesta)
    respuesta += 1
if respuesta * respuesta == objetivo:
    print(f'la raiz cuadrada de objetivo {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no tiene rai cuadrada exacta')

que buena clase, excelente persona.

Eso de f鈥檣formato}鈥 no lo sab铆a, perfecto cada d铆a se aprenden cosas nuevas!

Tengo python 3.4. As铆 es como lo escrib铆 y aprend铆 a transformar mis enteros a strings para poder imprimir. Estoy considerando seriamente actualizar a 3.7 para poder usar print(f鈥欌)

objetivo = int(input('Escoge un entero: '))
resultado = 0

while resultado**2 < objetivo:
    print(resultado)
    resultado += 1

if resultado**2 == objetivo:
    print('La raiz cuadrada de ' + str(objetivo) + ' es ' + str(resultado))
else:
    print(str(objetivo) + ' no tiene raiz cuadrada')

A partir de ahora PRINT STATEMENT para todo!

Es muy 煤til usar print() para verificar que pasa y solucionar errores l贸gicos

Cuando puso print(respuesta) comenc茅 a entender el proceso. La verdad es que es genial cuando ya tenes resuelto el proceso en s铆.

Para entender computacionalmente como funcionan los programas de software, es muy necesario aprender pseudocodigo con diagramas de flujo y realizar las pruebas de escritorio. As铆 se estimula el cerebro.

Tengo entendido que esto es parecido a la fuerza bruta o no?

El diagrama de flujo

Holaa, hice una comparaci贸n entre la forma exhaustiva y una mejora y vean la diferencia de tiempo en segundos:

import time

def exhautivo(number):
    print("De forma exhaustiva")
    start = time.perf_counter()
    i = 0
    while i**2 < number:
        i +=1

    if i**2 == number:
        print(f"La raiz de {number} es {i}")
    else:
        print(f"El numero {number} no tiene raiz exacta")

    end = time.perf_counter()
    print(f"Tiempo: {end-start}")

def mejorado(number):
    print("\nDe forma mejorada")
    start = time.perf_counter()
    
    raiz = number**0.5

    if  raiz % 1 == 0:
        print(f"La raiz de {number} es {int(raiz)}")
    else:
        print(f"El numero {number} no tiene raiz exacta")

    end = time.perf_counter()
    print(f"Tiempo: {end-start}")


number = int(input("numero: "))
exhautivo(number)
mejorado(number)```

Les dejo este peque帽o programa que calcula ra铆ces de cualquier 铆ndice

print(鈥欌)
print(鈥楤ienvenido a la calculadora de raices鈥)
print(鈥欌)
cantidad_de_veces = int(input('Introduzca la cantidad de raices a calcular: '))

while (cantidad_de_veces > 0):
entero = int(input('Introduzca un numero entero: '))
raiz = int(input('Introduzca el indice de la raiz: '))
raiz = float(1/raiz)
resultado = entero ** raiz
print (resultado)
cantidad_de_veces -= 1

yo los reto a algo; yo hice este programa , el cual lo compar茅 con el del profe y me di cuenta que es realmente ineficiente (aunque haga lo mismo).

Mi reto es que se den cuenta por qu茅 mi programa es ineficiente y el del profe no!!!
def is_cuadrado_exacto_v2(num:float):

aux = 0

while aux < num:
    
    if aux ** 2 == num:
        return aux
    
    aux += 1

return False

He aqui otra manera de realizar el reto鈥

numero = int(input("Escoge un numero entero: "))
respuesta = numero**0.5
i = 0

while i < respuesta:
    i += 1 
if i == respuesta:
    print("Tu numero tiene raiz cuadrada entera, es " + str(respuesta))
else:
    print("Tu numero no tiene raiz cuadrada entera")

Buscar hasta encontrar.

def run():
numero=int(input('Ingrese un numero '))
box={2,3,4,5,6}
if numero <=10:
print(鈥榮u numero es menor o igual a 10鈥, 'Su numero es ',numero)
else:
print(鈥榮u numero es mayor a 10鈥欌榯u numero es鈥,numero)

for i in box:
    if i==numero:
        print('El numero esta en box')
    else:
         print('El numero no  esta en box')  

if name==鈥main鈥:
run()

objetivo = int(input('Escope un entero: '))
respuesta = 0

while respuesta**2 < objetivo:
    print(respuesta)
    respuesta += 1 

if respuesta**2 == objetivo:
    print(f'la rais cuadrada de {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no tiene raiz cuadrada exacta')

#Enumeracion exhaustiva / adivina o verifca

objetivo = int(input("Escoje un entero: "))
respuesta = 0

while respuesta**2 < objetivo:
respuesta += 1

if respuesta**2 == objetivo:
print(鈥榣a raiz cuadrada de 鈥 + str(objetivo) + str(respuesta))
else:
print(str(objetivo) + 鈥 no tiene raiz cuadrada exacta鈥)

Este algoritmo en complejidad de tiempo si no estoy mal es O de N por el bucle que hace, pero la verdad no hay necesidad del bucle, simplemente es sacarle la ra铆z al numero, o sea, elevarlo a la 1/2 y con modulo comprobar si sobra parte decimal, si sobra parte decimal diferente de 0 no es ra铆z cuadrada exacta, si nos sobra 0 como parte decimal, es ra铆z cuadrada exacta. As铆 reducimos la complejidad en tiempo de este algoritmo.

Yo conozco la Enumeracion exhaustiva como ansiedad.

Personalmente me encanto esta clase, y la voz de locutor que tiene el profe ayuda mucho jajaja

Creo que ya entend铆 el prop贸sito de este curso.

Escoge un entero: 3
0
1
3 no tiene una raiz cuadrada exacta
macbook@MacBook-Pro-de-MACBOOK python % python3 enumeracion.py
Escoge un entero: 9
0
1
2
La raiz cuadrada de 9 es 3
objetivo = int(input('Escoge un entero: '))
respuesta = 0

while respuesta**2 < objetivo:
    print(respuesta)
    respuesta += 1

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no tiene una raiz cuadrada exacta')

Mis apuntes de la clase

Apuntes

una aplicaci贸n que vi de esto fue cuando buscaba n煤meros primos aleatorios grandes (2**2048) para aplicar en el algoritmo RSA.

enumeraci贸n exhaustiva = fuerza bruta right? 馃

Ejemplo del c贸digo 馃槉

"""
Algoritmo de Enumeraci贸n exaustiva

-Se le llama "Adivina y verifica" [Enumeramos todas las posibildades]
-las computadoras actuales son muy r谩pidas
-Uno de los primeros algoritmos que debes tratar en entrevistas

Problemas: Resolver las raices cuadradas
驴Como se saca una raiz cuadrada?
Si el cuadrado de un n煤mero es ig煤al a numero buscado entonces tiene una raiz cuadrada exacta

1.- Tratar de determinar si un n煤mero tiene una raiz cuadrada exacta
Example: Number 4

0*0 == 4 False
1*1 == 4 False
2*2 == 4 True

that麓s it 4 has a (seach how to write raiz cuadrada in english)

"""


def run():
    objective = int(input("Write a integer number: "))
    response = 0

    while response**2 < objective:
        response += 1

    if response**2 == objective:
        print(
            f'The number {objective} has a square root exact, and it麓s {response}.')
    else:
        print(f'The nuber {objective} doesn麓t have an exact square root.')


if __name__ == '__main__':
    run()

Buenas! como estan? Si bien no es objeto de la clase, comparto otra solucion posible a la incognita de buscar la raiz cuadrada exacta sin realizar una enumeraci贸n exaustiva 馃ゴ

Objetivo = int(input('Escoge un numero entero: '))
respuesta = (Objetivo ** (1/2))
if (respuesta)%1 == 0.0:
    print(f'la raiz cuadrada de {Objetivo} es {respuesta}')
else:
    print(f'{Objetivo} no tiene una raiz cuadrada exacta')

Un abrazo para todo la comunidad!

Buena clase.

No me gusta como explica este man

<#Ciclo For:
numero = int(input('Ingresa el multiplicando de la tabla que deseas:'))
limite = int(input('Ingresa el limite del multiplicador:'))
for i in range (0,limite+1):
    i = 0
    while i < limite :
        i = (i + 1)
        producto = (i*numero)
        print(str(numero)+" X "+str(i)+ " = " + str(producto))
    else:
        break> 

Buen video

#Este c贸digo sirve para encontrar si el n煤mero ingresado
#tiene una ra铆z cuadrada entera

objetivo=int(input("Ingresa un n煤mero entero: "))
resultado=0 #funciona como contador

while resultado**2 < objetivo:
resultado +=1

if resultado**2 == objetivo:
print(f"la raiz cuadrada de {objetivo} es 鈥榹resultado}鈥橽n")

else:
print(f"la raiz cuadrada de {objetivo} no es un n煤mero entero\n")

Intent茅 hacerlo con la consigna inicial y us茅 un for, if y break

def main():
    sqr_root = int(input('This script will tell you the square root of any number that has an exact square root. Enter a number:  '))

    for i in range(1, sqr_root):
        if sqr_root == i * i:
            print('The square root of ' + str(sqr_root) + ' is ' + str(i))
            break
        elif i == sqr_root - 1:
            print('隆Sorry! Your number dont have an exact square number')


if __name__ == "__main__":
    main()

Enumeraci贸n exhaustiva Consiste en enumeras todas las posibilidades. Y en cualquier caso es el prier algoritmo鈥 Consiste en enumeras todas las posibilidades. Y en cualquier caso es el prier algoritmo que debo descartar, si bien no es tan eficiente respecto a otros, es muy efectivo.

objetivo = int(input('Escoge un entero: '))
respuesta = 0

while respuesta**2 < objetivo:
    print(respuesta)
    respuesta += 1

if respuesta**2 == objetivo:
    print(f'La raiz cuadrada de {objetivo} es {respuesta}')
else:
    print(f'{objetivo} no tiene una raiz cuadrada exacta')

David, mi computadora demoro 25 segundos XDDD, es una AMD A10 radeon R6 quad core de 1.9 GHz, la tuya lo hizo en un chasquido, he programado toda mi vida en ella y hasta ahora me doy cuenta de la verdad.

Para descifrar la clave de una red de wifi se han de usar estos pensamientos computacionales.

& sigue iterando xD la que hace el trabajo es la GPU.

Es mala pr谩ctica utilizar los print, lo mejor es utilizar los debuggers y colocar puntos de interrupci贸n para paralizar el c贸digo y manualmente darle continuidad paso por paso!

La ennumeraci贸n exhaustiva, es tambi茅n llamado, adivina y verfica, debido a que ponemos todas las posibilidades sobre la mesa, y verficamos cada una de ellas para dar solo las correctas.

No es un aporte pero, quer铆a comentarles que POR FIN PUDE ENTENDER LA L脫GICA DE ESTE ALGORITMO. 馃槀

Cuando ingreso el numero entero, no sigue ejecutando y no me salta ningun error.

** Enamuracion exhaustiva **

Se dice de lo que agota un tema o materia, es decir, que trata todos los casos posibles o, al menos, una enorme cantidad de ellos. Ejemplo: Una colecci贸n o enumeraci贸n exhaustiva, es aquella en la que todos los casos o elementos posibles han sido tomados en cuenta.


  # Calcular la raiz cuadrada de un numero

  objeitvo = int(input("set a number: ))
  resp = 0
  
  while resp**2 < objetivo:
    resp += 1
    
  if resp**2 == objetivo:
    print(f'La raiz es cuadrada de {objetivo} es {resp}')
  else:
    print(f'El numero no tiene raiz cuadrada')

Parece que este algoritmo es el que usan los programas de fuerza bruta cuando se utilizan diccionarios鈥 interesante