为什么程序多计算一个值?例如,我给他N = 50。输出:
1
4
9
16
25
36
49
64
代码:
N = int(input())
n = 1
k = 1
while n < N:
n = k ** 2
print(n)
k = k + 1
如前所述,您正在检查n然后更改n,您想要更改n然后在继续之前检查。
您可以使用海象操作符来分配n
并在while语句中检查它的值。(需要Python 3.8+)
N = int(input())
n = 1
k = 1
while (n := k**2) < N:
print(n)
k += 1
这实际上是将n
赋值给k**2
,然后在继续之前检查结果是否为<N
。
1
4
9
16
25
36
49
如果输入为50
,则程序输出1 4 9 16 25 36 49 64
,因为while循环在增加值之前检查值。一旦进入循环,你增加它,计算平方,然后打印。
如果你想让它终止,尝试设置计算n
作为循环的最后一步:
N = int(input())
n = 1
k = 1
while n < N:
print(n)
k = k + 1
n = k ** 2
在计算平方并打印它之前检查是否达到了限制。因此,您正在检查n
的前一个值,而不是即将打印的值。
将检查符移到循环中。
while True:
n = k ** 2
if n >= N:
break
print(n)
k += 1
在更改(并打印)n
后,计算n < N
。
n = 1
k = 1
N=50
while 1:
n = k ** 2
if n > N:
break
print(n)
k = k + 1
要解决这个问题,在打印之前中断,将计算值移动到循环中,而不是在n
的最后一次更新之后移动。1
4
9
16
25
36
49
对于代码的条件,例如,当n = 49
时,条件满足,因为49 < 50
因此它将继续处理值并打印新值。但是一旦n = 64
也就是> 50
,它就停止了。这是一个可能的解决方案:
N = int(input())
n = 1
k = 1
while True:
if n >= N:
break
n = k ** 2
print(n)
k = k + 1
这将继续执行代码,但是一旦满足n >= N
条件,它将停止执行。