我被要求编写一个打印小于一个输入的所有方数的程序。但是,在这段代码中有一个非常小的问题,我似乎无法确定:
from math import sqrt
n=int(input())
counter = 0
while counter * counter < n:
counter = counter + 1
print(counter * counter)
看,问题是,它打印所有正确的方块,但也输出了输入的方块。 有人可以告诉我如何解决这个问题吗?谢谢你的帮助。
答案 0 :(得分:3)
只需将增量向下移动一行并从1开始计数:
n=int(input())
counter = 1
while counter * counter < n:
print(counter * counter)
counter += 1
在代码counter
中,在对n
进行测试后增加,但在打印广场之前。因此,即使counter * counter
小于n
,也不一定是(counter + 1) * (counter + 1)
。
通过向下移动增量,您正在打印counter * counter
,即刚刚针对n
测试的值。