查找while循环给出的序列的最大值



我目前正在学习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

printwhile循环结束后的数字。

n=1
bigNumber = 0
while n <= 10:
bigNumber = n
n = n*2
print(bigNumber)

最新更新