我是Python编程新手,我在C中执行了这个问题,但我可以在Python中解决它,因为它不会在Jupyter笔记本上抛出错误,只是在单元格上抛出一个星号。
我循环了列表以避免索引越界错误。 请帮忙
s='UDDDUDUU'
n=8
s=list(s)
seaLevel=0
valley=0
li=[]
for i in s:
if i=='D':
seaLevel-=1
li.append(seaLevel)
elif i=='U':
seaLevel+=1
li.append(seaLevel)
i=0
j=0
while i<n:
if li[i]==0 and li[(i+1)%n]<0:
valley+=1
j=i+1
while li[j]<0 and j<n:
j=+1
i=j
else:
i+=1
valley
最佳答案
单元格上的星号通常表示存在无限循环并且代码片段不会终止。这正是您的代码的情况 - 您的 while 循环是一个无限循环。
while i<n:
if li[i]==0 and li[(i+1)%n]<0:
valley+=1
j=i+1
while li[j]<0 and j<n:
j=+1 !!!!!!!!!!!!!!!!!!!!!!!!!
i=j
else:
i+=1
您的拼写错误具体是j=+1
,相当于j=(+1)
,而j+=1
是j=j+1
。 j=+1
始终设置 j=1
,因此您的 i=j
始终设置 i=1
,因此你的 while 循环永远不会终止。
TL;DR:将 j=+1
更改为 j+=1
。并且不要忘记为 valley
添加打印语句,正如评论中所提到的。
关于Jupyter 笔记本中的 Python while 循环未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192853/