数字的平方根的整数部分的计算可以通过反复试验来完成,从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
答案 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 > 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
只是逃避循环的另一种方式。但这些都是例外:结束循环的正常方法是打破它的条件,所以这就是应该如何编写的。