-1

一个数的平方根的整数部分的计算可以通过反复试验来完成,从 1 开始,通过执行平方直到结果小于或等于由根计算的起始值。

以下程序返回根的整数部分

def radice(x):
    z = 0
    t = 0
    while True:
        t = z*z
        if t > x:
            z -= 1
            return z
        z += 1

radice(17) // 4

是否可以在不使用函数和中断的情况下编写它?这是我的代码没有函数,但我不知道如何编写相同的算法break

z = 0
t = 0
while True:
    t = z*z
    if t > x:
        z -= 1
        break
    z += 1
print 'The integer part of the root is: ', z
4

4 回答 4

3

这应该足够了:

>>> int(17**0.5)
4

17**0.5生成 17 的平方根,int基本上去掉小数,留下“根的整数部分”。

在不使用任何函数的情况下,如果您想要一个整数结果,则需要复杂的代码(如您自己的)。但是,如果可以使用浮点数,那么您可以尝试以下操作:

>>> (17**0.5)//1
4.0

这基本上与int调用相同,但如果任一侧是浮点数,则将返回一个浮点数。

于 2013-04-09T09:14:32.803 回答
1

正如你所说,一个数字的平方根的整数部分可以通过反复试验来完成,从 1 开始,通过执行平方直到结果小于或等于由根计算的起始值。说不用function和break语句也可以写代码;这是代码:

n = input("insert a number: ")
r = 1
while (r * r <= n):
        r = r + 1

print  "the result is:", r -1
于 2013-04-09T21:38:54.000 回答
0

括号是为了清楚起见,不是必需的

>>> (17**.5)-(17**.5)%1
4.0
于 2013-04-09T09:19:17.273 回答
0

好吧,让我们逻辑思考。您不能使用break,因此退出循环的唯一方法while是打破它的条件。如果它是True,它就不能被破坏,所以我们必须考虑停止迭代的适当条件。这个条件已经在你的算法中使用了:你退出时t > x,或z * z > x。所以继续迭代的条件应该是相反的,即z * z <= x。我们有这个简单的解决方案。

x = 17
z = 0
while z * z <= x:
    z += 1

print 'The integer part of the root is: ', z - 1

作为一般规则,尽量避免这些while True:循环。虽然它们有时很有用,但它们通常更难阅读和理解,这可能是你的老师限制使用break. 该函数被禁止可能是因为return它只是逃避循环的另一种方式。但那些是例外的:结束循环的正常方法是打破它的条件,所以它应该这样写。

于 2013-04-09T11:17:01.213 回答