我目前正在学习 Python,更具体地说,学习 while 循环是如何工作的。据我所知,这个循环可用于创建具有特定条件的数字序列。例如,
n=1
while n < 10:
n = n*2
print(n)
这给出了 2 到 16 的幂:
2
4
8
16
但是我想知道是否有一种方法可以让循环仅打印序列中的最大数字,在本例中为 16。这是我的尝试,
n=1
bigNumber = 0
while n <= 10:
bigNumber = n
n = n*2
if n < bigNumber:
print(bigNumber)
然而,这不起作用。有人可以指出错误是什么吗?
您的代码无法按预期工作,因为
if
语句的条件从未得到满足。就举个例子吧n=4
。然后在循环中,您首先分配 bigNumber = 4
,然后将 n
增加到 8
。在这一点上,总是n > bigNumber
。
获得正确答案的最简单方法是在循环后打印
n
(已在评论中提到),因为 n
始终递增。
您可以通过两种方式做到这一点。
如果您只想打印最终值,您可以省略部分代码:
n=1
while n < 10:
n = n*2
print(n)
如果您想保留所有值然后显示最高的值:
n=1
num_list = []
while n < 10:
num_list.append(n)
n = n*2
print(f'From the numbers {num_list} the highest is {max(num_list)}')
max()
函数旨在查找列表中的最高值。
输出应该是:
From the numbers [1, 2, 4, 8] the highest is 8
print
while
循环结束后的数字。
n=1
bigNumber = 0
while n <= 10:
bigNumber = n
n = n*2
print(bigNumber)
(还有一种选择,如果你告诉脚本打印出数字加1,它会告诉你158729然后停止)下面的脚本↓↓↓
i = 1 当我 < 9999999999: print(i) i += 1
如果这就是你所说的最大数字的意思,即使这个只是让脚本结束,但这也可能与你运行它的Python程序的版本或类型有关