Code Review Asked by John Test on October 27, 2021
Very simple square root calculator. I am sure it’s terrible and can be made much better.
I feel it’s way too many lines.
import random
## ask user for a number to find sq root for
num1 = input("Please enter number for which we'll find sq root:n")
## generate a random number and test it
randomNum1 = random.randint(1,9)
print("Random number is " + str(randomNum1))
ranMul1 = 0
while True:
if float(ranMul1) == float(num1):
print("square root of " + str(num1) + " is " + str(randomNum1))
break
else:
randomNum1 = round((float(randomNum1) + (float(num1)/float(randomNum1))) / 2, 4)
ranMul1 = round(randomNum1 * randomNum1,4)
print("Trying number " + str(randomNum1))
continue
The great input from @hjpotter92 gets you 99% of the way there. The only additional comment I have is about this:
while num != random_num * random_num:
Exact comparison of floating-point numbers is problematic. You're going to want to pick some (very small) number, usually called epsilon, below which the error is insignificant and call that "close enough".
Read https://docs.python.org/3/library/math.html#math.isclose for more details.
Answered by Reinderien on October 27, 2021
Welcome to the community :). A few pointers:
snake_case
naming convention for variables.if __name__
block.The above mentioned points, and a few more changes, your code would be:
from math import isclose
from random import randint
def calculate_sq_root(num: float) -> float:
"generate a random number and manipulate it until we calculate square root of input number"
random_num = randint(1, 9)
print(f"Random number is {random_num}.")
while not isclose(num, random_num * random_num):
random_num = (random_num ** 2 + num) / (random_num * 2)
print(f"Trying number {random_num:.4f}")
return random_num
def get_input() -> float:
"ask user for a number to find sq root for"
return float(input("Please enter number for which we'll find sq root:n"))
def main():
user_num = get_input()
sq_root = calculate_sq_root(user_num)
print(f"Square root of {user_num} is {sq_root}.")
if __name__ == "__main__":
main()
Answered by hjpotter92 on October 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP