【问题标题】:having trouble with square root loop using python使用 python 的平方根循环有问题
【发布时间】:2011-03-29 02:41:10
【问题描述】:

我有一个用户输入“n”,我正在寻找平方根。我知道是 math.sqrt(n),但我需要让程序继续找到平方根,直到它小于 2。还返回给用户程序运行了多少次以使用 a 找到小于 2 的根柜台。我正在使用 python。

到目前为止:

import math
root = 0
n = input('Enter a number greater than 2 for its root: ')

square_root = math.sqrt(n)
print 'The square root of', n, 'is', square_root

keep_going = 'y'

while keep_going == 'y':
    while math.sqrt(n) > 2:
        root = root + 1

【问题讨论】:

  • 如果这是作业,请标记它。
  • 您应该将代码放入原始问题中。这将使它具有可读性,尤其是考虑到 python 使用缩进。

标签: python loops square-root


【解决方案1】:
import math
user_in = input()
num = int(user_in)

num = math.sqrt(num)
count = 1
while(num > 2):
  num = math.sqrt(num)
  count += 1

print count

【讨论】:

  • 你为什么要这样解决别人的作业……3年后他会坐在你隔壁的小隔间里……
【解决方案2】:

假设 2.x

count = 0
user_input = int(raw_input("enter:"))
while true:    
    num = math.sqrt( user_input )
    if num < 2: break
    print num
    count+=1
print count    

不存在对用户输入的错误检查。

【讨论】:

    【解决方案3】:

    明显的方式:

    def sqrtloop(n):
        x = 0
        while n >= 2:
            n **= 0.5
            x += 1
        return x
    

    没那么多:

    def sqrtloop2(n):
        if n < 2:
            return 0
        return math.floor(math.log(math.log(n, 2), 2)) + 1
    

    【讨论】:

    • 请注意,Python Style Guide 表示您应该在扩充赋值 (**=, +=)、比较 (宁可 将复合语句写在一行上,例如if n &lt; 2: return 0
    【解决方案4】:
    num = 0
    while num < 100:
       
       num_sqrt = num ** 0.5
       print('The square root of %0.3f is %0.3f'%(num ,num_sqrt))
       
       num = num + 1
    print ("Good bye!")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多