root的整数部分,不使用函数

时间:2013-04-09 09:13:14

标签: python

数字的平方根的整数部分的计算可以通过反复试验来完成,从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 个答案:

答案 0 :(得分:3)

这应该足够了:

>>> int(17**0.5)
4

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

不使用任何函数,如果需要整数结果,则需要复杂的代码(如您自己的代码)。但是,如果浮点数可以,那么你可以试试这个:

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

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

答案 1 :(得分:1)

如你所说,数字的平方根的整数部分可以通过反复试验来完成,从1开始,通过执行平方直到结果小于或等于其起始值由根。 说你可以在不使用函数和break语句的情况下编写代码;这是代码:

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

print  "the result is:", r -1

答案 2 :(得分:0)

Parens是为了清晰,不是必需的

>>> (17**.5)-(17**.5)%1
4.0

答案 3 :(得分:0)

好的,让我们从逻辑上思考。 你不能使用break,所以摆脱while循环的唯一方法就是打破它的条件。 如果它是True,它就不能被破坏,所以我们必须考虑停止迭代的正确条件。此条件已在您的算法中使用:您在t > xz * 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只是逃避循环的另一种方式。但这些都是例外:结束循环的正常方法是打破它的条件,所以这就是应该如何编写的。