这个while循环有什么问题? - Python

时间:2015-09-24 10:44:07

标签: python while-loop

我想询问用户输入数字n,然后打印小于n的所有正方形。例如,如果n = 100,我希望它打印0,1,4,9,16,25,36,49,64,81。

我做了以下事情:

n = float(input("Please enter a positive number: "))

square = 0.0

while square < n:
    square = square + 1
    print(square * square)

但是如果我执行它,然后输入n = 100,这会打印所有方格,最多1000个。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您正在从0循环到n,然后打印该数字的正方形。 100 * 100是10000。

重命名square变量;它没有准确反映你在计算的数量,它是 root ,而不是平方值。实际上,它只是直接计数器,每步增加1。然后测试计数器的平方是否小于n

root = 0.0
while root * root < n:
    root = root + 1
    print(root * root)

如果你必须存储方块,请实际存储方块,而不是根:

root = square = 0.0
while square < n:
    root = root + 1
    square = root * root
    print(square)

接下来,如果你希望81是最后打印的数字,那么在 print()之后移动增量

root = 0.0
while root * root < n:
    print(root * root)
    root = root + 1

这可以确保您打印刚刚测试过的数字的平方,而不是 next root。

答案 1 :(得分:-2)

如果您正在寻找简单的代码,则可以使用此-------- >>

n = int(input())
for i in range(0,n):
   print(i*i)

我认为这很简单.....