【发布时间】:2013-09-04 11:11:12
【问题描述】:
我被困在Python 101 type problem involving loops 上。以下是路线:
平方数是 K × K 形式的整数,例如9 是一个平方数,因为 3 × 3 = 9。编写一个程序,从输入中读取一个整数 n,并输出所有小于 n 的正平方数,每行一个以升序排列。例如,如果输入是 16,那么正确的输出应该是
1
4
9
这是我目前所拥有的,但它有点工作,但会永远运行。我的代码从未到达 if 语句,因此它在到达 17 之前中断(停止)。
假设 n = 17。
n=int(input())
counter = 1
while counter * counter < n:
for counter in range(1,n):
a = counter*counter
print(a)
if a < n:
break
结果:
1
4
9
16
25
36
49
64
81
【问题讨论】:
-
那个特定循环中的
n是什么? -
17.我想我提到过。 “假设 n = 17。”
-
啊,对不起,我错过了。
-
这里有一个提示:你只需要一个循环,但在这里你有两个。这是另一个:
a最终成为counter*counter。为什么你只会在a < n,即counter*counter < n的情况下打破?如果counter*counter > n,你不想打破吗? -
我认为这可能是因为你打破了 for 循环,但你没有改变
counter所以 while 循环将继续运行
标签: python for-loop while-loop counter square-root