Square root in python

Preciso de ajuda com uma calculadora de raiz quadrada. As etapas são as seguintes:

“Você deve usar o método babilônico para calcular raízes quadradas.” Você deve criar um software interativo baseado nessa característica fundamental que

aqui está o código:

# Ask user if they would like to calculate a square root for a single number or range.
single = input("Enter 'single' or 'range' to solve for a single square root or a range of values, respectively: ")

# Set error message to let the user know 'range' calculation are not currently available.
if single == 'single' or 'Single':

    # Ask user to enter a positive integer.
    number = int(input("Enter a positive integer value: "))

    # Set error message asking for valid number if user enters something other than a positive integer.
    while number < 0:
        print("Please enter a valid number.")
    else:
        # Choose epsilon
        epsilon = .0002

        # Choose estimate for the square root of x
        estimate = 2

        # Evaluate the estimate
        while number - estimate > epsilon:
            # Calculate the square root using the Babylonian Method.
            estimate = (number + 1.0) / 2.0
            second_estimate = (estimate + number / estimate) / 2.0

            # Print the users selected value and its square root.
            print("Value", "   ", "Square Root")
            print(" ", number, "        ", format(second_estimate, '.3f'))
else:
    # Tell user 'range' calculation are not currently available.
    print("That function is not currently available.")

Solicita que o usuário insira um valor inteiro maior que zero. Verifica se o valor é realmente maior que zero. Caso contrário, o programa mostra uma mensagem de erro e solicita uma entrada novamente, conforme demonstrado no exemplo anterior. O método babilônico é usado para calcular a raiz quadrada do valor. A raiz quadrada é exibida ao usuário formatada para mostrar exatamente três casas decimais (não mais que três e não menos que três)."

Não consigo usar a função sqrt. Estou chegando perto, mas não consigo encontrar o loop correto.

Consegui encontrar o problema com o seu primeiro loop while. No bloco

while number < 0:
    print("Please enter a valid number.")

Ele não pede nenhuma entrada do usuário. Seria necessário pedir ao usuário informar o número novamente, para que assim a variável number seja atualizada e possa sair do loop. Assim, altere o trecho de código acima para algo como

while number < 0:
    number = int(input("Please enter a valid number."))

O segundo loop eu ainda não consegui resolver, pois eu não entendi ainda a lógica do seu programa, como que é feito esse cálculo. Mas o problema deve ser a mesma coisa; uma variável que deveria ser atualizada não está sendo atualizada. Assim a condição é sempre verdadeira e o loop prossegue indefinidamente.

Nesse segundo loop acredito que você deva atualizar a variável estimate a cada interação, de modo a, em algum momento, tornar a condição do loop falsa. Uma dica, faça esse loop imprimir o valor das variáveis a cada interação, por exemplo

print("estimate =", estimate)

Para que você possa identificar onde está o problema.

1 curtida

Boa tarde, dei uma olhada no código, e te recomendo fazer uma alteração logo no começo, caso o usuario digite qualquer coisa, a função ainda se inicia. que pode ser resolvido da seguinte forma:

Bloco de codigo
single = input(“Enter ‘single’ or ‘range’ to solve for a single square root or a range of values, respectively:”)
if single.lower() == ‘single’:

E em relação ao seu primeiro loop, o colega acima conseguiu resolver, mas creio que deva rever uma aplicação do método babilonico para corrigir a segunda parte, talvez um gpt ajude

2 curtidas