Python 的最近平方函数 - 为什么我的解决方案不正确
Nearest Square Function with Python - why is my solution is incorrect
我被告知 post 一个新问题 - 请参考 post :Nearest Square Function with Python
objective 是找到距离 limit = 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行?
发生这种情况是因为 Python 解释器将执行循环内的所有内容,并且只会在条件 square < limit 被评估为 false 时中断。
在循环的最后一次迭代中,num = 8 和 square = 49。然后循环正确地将 49 < 40 评估为 false 并中断。它不会在条件变为假时立即进入循环,只有在评估“square < limit”时才会中断。
一个潜在的解决方案可能是像这样将打印放在 if 语句中,
if square < limit:
print stuff
这是因为您正在检查 square < limit
并且当 number = 6
满足条件的 suare = 25
并且接下来打印行 6 36
时,数字变为 7
andsqure 变成 36
仍然小于 40 因此它打印 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
我被告知 post 一个新问题 - 请参考 post :Nearest Square Function with Python
objective 是找到距离 limit = 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行?
发生这种情况是因为 Python 解释器将执行循环内的所有内容,并且只会在条件 square < limit 被评估为 false 时中断。
在循环的最后一次迭代中,num = 8 和 square = 49。然后循环正确地将 49 < 40 评估为 false 并中断。它不会在条件变为假时立即进入循环,只有在评估“square < limit”时才会中断。
一个潜在的解决方案可能是像这样将打印放在 if 语句中,
if square < limit:
print stuff
这是因为您正在检查 square < limit
并且当 number = 6
满足条件的 suare = 25
并且接下来打印行 6 36
时,数字变为 7
andsqure 变成 36
仍然小于 40 因此它打印 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