Python中的最近平方函数-为什么我的解决方案不正确



我被告知发布一个新问题-请参阅帖子:使用Python 的最近平方函数

目标是找到最接近极限=40的最大平方。

我想出了一个解决方案,但我不明白为什么这不起作用。正确的结果是将数字打印到36,而不是超过40。

limit = 40 #given limit by quiz 
num=0 #set point by me 
square=num*num #this is what a square means #it could also be said of num**2 
while square<limit:
square=num**2
num=num+1
print((num-1),square)

我得到的结果是:

1 1
2 4
3 9
4 16
5 25
6 36
7 49

为什么会出现第7行的方块49

这是因为您正在检查square < limit,当number = 6是满足条件的suare = 25,并且接下来打印行6 36时,数字变为7,然后变为小于40的36,因此它打印7 49并将数字递增为8,现在当程序检查while condition时,它失败为49 < 40 == False,因此程序执行停止。您可以将代码修改为:

limit = 40    # given limit by quiz 
num = 1    # start with 1 as 0 suare is 0 and is not required by you i guess
while (num * num) < limit:
print((num),(num * num))    # prints num and square of num
num += 1        # increments num by 1

输出:

1 1
2 4
3 9
4 16
5 25
6 36

之所以会发生这种情况,是因为Python解释器将执行循环中的所有内容,并且只破坏一次条件平方<limit被评估为false。

在循环的最后一次迭代中,num=8,square=49。循环然后正确地评估49<40为假并断裂。只要条件变为假,它就不会在循环内部中断;正方形<极限;评估。

一个潜在的解决方案可能是将打印内容放在一个类似的if语句中,

if square < limit:
print stuff

相关内容

最新更新