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