我需要用Python编写一个代码,使用while循环返回列表中的第一个正数。这就是我所拥有的,但它不起作用
def positive(num):
n= num[0]
### Can't change anything above
首先,我尝试:
i = 0
while n <= 0:
i += 1
但那不起作用,所以我试着:
i = 0
while i < len(num):
n = num[i]
while n <= 0:
i += 1
##### Can't change below
return n
我觉得我知道如何使用while循环,但改变列表的索引却让我大吃一惊
让我们先看看您的代码中有什么错误,或者需要修复什么
在这里,您使用了良好的逻辑,但有一个问题。您的
while
循环一直运行到n<=0
,当n是您当前的数字时,这是正确的。 在您的代码中,您只是更新i
(索引),而不是当前编号例如,以
num=[-2,-3,4,5]
为例,函数应该返回4
。让我们干运行您的while循环。 在第一次迭代之前:循环条件:
n<=0
已满足,因此循环运行并i+=1
第一次迭代后(即第二次迭代前):请记住,我们没有对
n
执行任何操作,因此它保持原样。 再次循环条件:n<=0
得到满足,因为-2<=0 所以我们做i+=1
第二次迭代后(即第三次迭代前):您是否注意到,通过这种方式,while循环条件将永远不会中断? 因此,通过这种方式,while循环将无输出地无限运行
因此,我们想到的最大问题是-那我们到底该怎么办? 简单的答案是,更新
n
,如下所示-现在,当我们运行它时,
n
(当前元素)将在循环的每个迭代中得到更新。也就是说,对于每个迭代,n
和i
的值如下所示:迭代1: 在此迭代之前:
i=0, n=-2
循环条件:n<=0
(已满足) 在这个迭代之后:i=1, n=-3 (n= num[i] , that is n=num[1]=-3)
迭代2: 之前:
i=1, n=-3
条件:n<=0
(满足) 之后:i=2,n=4迭代3: 之前:
i=2, n=4
条件:n<=0
(不满足) 之后:循环不运行因此,在循环结束后,我们将
i
设为2
,这是正数的第一个索引这段代码仍然存在一个小问题
我可以问你当num的所有元素都是负数时会发生什么吗? 即num数组/列表中不存在正元素时
循环条件
<>考虑当{{CD28>}并且我们再次进入while循环时,让我们检查循环条件:^ {< CD29 >}和^ {CD2>}。 因此,我们进入循环并执行以下操作:n<=0
,其中n
是当前元素,将始终得到满足,因此i
将在每次迭代后更新为i+1
那就是
i=(length-1)+1
那就是i=length
现在呢n=num[i]=num[length]
我们都知道,在python中,索引从0
开始,到length-1
结束。 那么,当我们尝试以索引长度访问元素时,您认为会发生什么多田🎉, 我们会找到索引器。为了更好地理解,请查看下面的代码
输出:
那么,我们应该如何处理while循环中的这个错误呢? 只需设置另一个条件,即循环应该运行到
i<length
,即循环现在变为所以,是的,现在它完成了。 我在下面写了一个完整的函数。在这里,在这个函数中,我不是在循环条件中使用
n=num[i]
然后使用n<=0
,而是直接在循环条件中使用num[i]
使用与while循环基本相同的
for loop
:或者作为
while
变体:也存在所谓的生成器函数,例如
itertools.dropwhile()
:他们都会屈服
正如Mistermiagi所指出的,最好使用
for
循环。您还可以使用while
循环:相关问题 更多 >
编程相关推荐