为什么程序要计算一个额外的值(循环"while")?



为什么程序多计算一个值?例如,我给他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条件,它将停止执行。

相关内容

  • 没有找到相关文章

最新更新