【问题标题】:Babylonian Method for Solving the Square Root of a Number求解数字平方根的巴比伦方法
【发布时间】:2020-05-12 10:24:48
【问题描述】:

所以我必须编写一个程序来使用巴比伦方法计算一组范围的平方根。但是,我被卡住了,因为我编写的程序只给了我一个数字的平方根。我为测试输入的范围是 1、16。但我只得到 15 的平方根。

图片是程序应该显示的。

question1 = input("Enter 'single' or 'range' to solve for a single square root or a range of values, respectively: ")
if question1 == "single":
    value1 = int(input("Please enter a positive integer above 0: "))
    if value1 <= 0:
        print("Please enter an positive integer above 0: ")
        value1 = int(input("Please enter a positive integer above 0: "))

    oValue = 1
    value2 = value1
    e = 0.0001
    while value2 - oValue > e:
        value2 = (value2 + oValue) / 2
        oValue = value1 / value2

    print(format(oValue, ".3f"))

else:
    start = int(input("Enter a positive integer value to start your range: "))
    end = int(input("Enter a positive integer value to end your range: "))
    for num in range(start, end):
        oValue = 1
        value2 = num
        e = 0.0001
        while value2 - oValue > e:
            value2 = (value2 + oValue) / 2
            oValue = num / value2

print(format(oValue, ".3f"))

【问题讨论】:

  • 另外,如果我应该以不同的格式设置问题,请告诉我。我很少使用这个网站。
  • 您需要在循环中打印结果。你在循环结束时打印它,所以你只得到最后一个值

标签: python square-root


【解决方案1】:

你已经很接近了。最后一行需要缩进更多:

...
else:
    start = int(input("Enter a positive integer value to start your range: "))
    end = int(input("Enter a positive integer value to end your range: "))
    for num in range(start, end):
        oValue = 1
        value2 = num
        e = 0.0001
        while value2 - oValue > e:
            value2 = (value2 + oValue) / 2
            oValue = num / value2
        print(format(oValue, ".3f"))

print() 只有在循环内缩进时才是 for 循环的一部分。

当它完全左对齐时,它在 for 循环之外,所以它只在脚本末尾运行一次。

希望这会有所帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多