执行程序显示 "IndexError"。它是 HackerRank 上问题的代码
Program on execution shows "IndexError". It is a code for the problem on HackerRank
问题:
一个狂热的徒步旅行者会详细记录他们的徒步旅行。在最后一次采取精确步数的徒步旅行中,对于每一步,它都会被记录下来,是上坡、下坡还是下坡。远足总是在海平面开始和结束,每一步向上或向下代表高度的一个单位变化。我们定义了以下术语:
一座山是一系列连续的海拔高度,从海平面上升到海平面下降结束。
山谷是海平面以下的一系列连续步骤,从海平面下降开始,到海平面上升结束。
给定徒步旅行中上下台阶的顺序,找出并打印走过的山谷数量。
n = int(input("Enter the no. of steps:"))
steps = input("Enter the path:")[:n].upper()
uc,dc = 0,0
vc = 0
valley = []
for i in steps:
#to count the no. of down steps
if i == 'D':
dc += 1
#to count the no. of up steps
if i == 'U':
uc += 1
valley.append(i) #list for valleys or mountains
#Start recounting if up_count == down_count; to get to **sea level**
if dc == uc:
dc,uc = 0,0
#--Valleys--
if valley[0] == 'D' and uc == 0 and dc==0:
vc += 1 #No. of valleys
valley.clear() #clear the list
#--Mountains--
if valley[0] == 'U' and uc == 0 and dc==0:
valley.clear()
print(vc)
这是因为如果条件是True
-
,下面的代码会清除valley
#--Valleys--
if valley[0] == 'D' and uc == 0 and dc==0:
vc += 1 #No. of valleys
valley.clear() #clear the list
而您仍然尝试在此处检查 valley[0]
-
#--Mountains--
if valley[0] == 'U' and uc == 0 and dc==0:
valley.clear()
您需要使用 elif
而不是 if
或者您需要检查 valley
是否不为空。
问题: 一个狂热的徒步旅行者会详细记录他们的徒步旅行。在最后一次采取精确步数的徒步旅行中,对于每一步,它都会被记录下来,是上坡、下坡还是下坡。远足总是在海平面开始和结束,每一步向上或向下代表高度的一个单位变化。我们定义了以下术语:
一座山是一系列连续的海拔高度,从海平面上升到海平面下降结束。 山谷是海平面以下的一系列连续步骤,从海平面下降开始,到海平面上升结束。 给定徒步旅行中上下台阶的顺序,找出并打印走过的山谷数量。
n = int(input("Enter the no. of steps:"))
steps = input("Enter the path:")[:n].upper()
uc,dc = 0,0
vc = 0
valley = []
for i in steps:
#to count the no. of down steps
if i == 'D':
dc += 1
#to count the no. of up steps
if i == 'U':
uc += 1
valley.append(i) #list for valleys or mountains
#Start recounting if up_count == down_count; to get to **sea level**
if dc == uc:
dc,uc = 0,0
#--Valleys--
if valley[0] == 'D' and uc == 0 and dc==0:
vc += 1 #No. of valleys
valley.clear() #clear the list
#--Mountains--
if valley[0] == 'U' and uc == 0 and dc==0:
valley.clear()
print(vc)
这是因为如果条件是True
-
valley
#--Valleys--
if valley[0] == 'D' and uc == 0 and dc==0:
vc += 1 #No. of valleys
valley.clear() #clear the list
而您仍然尝试在此处检查 valley[0]
-
#--Mountains--
if valley[0] == 'U' and uc == 0 and dc==0:
valley.clear()
您需要使用 elif
而不是 if
或者您需要检查 valley
是否不为空。