2017-10-22 8 views
1

現在のリスト要素が前のリスト要素よりも大きい場合は、カウントに加算するコードを記述しようとしています次のリスト要素。例えば、リストの中で:[1、3、5、7、2] ... 1と2は評価されません。 SO 3は、比較されるべき第一であり、図3は、1 5以下である、5 3 7より大きくない、および7 5より大きく、2であるので= 1Python 3.x:現在の要素と前と次を比較しようとしています(組み込み関数なし)

を数えますこれは宿題のため、私は組み込み関数を使うことはできません。リストはランダムな長さであり、正の数と負の数を含む場合があります。

私は2つのバリエーションを試しました... このバージョンでは、i値は決して上がらない。どうしてこれなの?どうすればそれを次の番号に行くことができますか?

a = [int(i) for i in input().split()] 
b = a[0] 
count = 0 

for i in a[1:]: 
    for j in a[2:]: 
     if i > j and i > b: 
      count +=1 
     b = i 

print(count) 

2番目のバージョンでは、インデックスエラー:リストインデックスが範囲外です。どのように私はそのようなエラーを修正することができますか?

a = [int(i) for i in input().split()] 
prev = nxt = 0 
b = a[1] 
count = 0 

for i in range(1, len(a)): 
    prev = a[i-1] 
    nxt = a[i+1] 
    if b > prev and b > nxt: 
     count +=1 
    prev = b 
    b = nxt 

print(count) 

ありがとうございました。私はどこが間違っているのか知りたい。あなたが最初と最後ずに確認することができます

+0

、インデックスエラーが私が思う起こるとき 'I = LEN(a)の-1' 'nxt = a [i + 1]'をとり、これは 'a'インデックスの範囲外です。 – ZiGaelle

答えて

2

あなたがlist.You上にないがために、次の要素にアクセスしようとしているインデックスにアクセスしようとしていますリストの最後の要素ですが、そこにはありません! ちょうどループの範囲ここ

for i in range(1,len(a)-1) 

のために変更私が書いたコードです:第二版では

count = 0 
for i in range(1,len(a)-1): 
    if a[i+1] <a[i]> a[i-1] : 
      count += 1 
+1

あなたのお手伝いをさせていただきありがとうございます。私は今どこが間違っているのか見ています! – CoderBaby

1

:あなたが書いたコードで

my_list = my_list[1:-1] 
res=0 
for ndx,el in enumerate(my_list): 
    if my_list[ndx-1] > el and my_list[ndx+1] > el: 
    res+=el 
+0

これは便利です!ご協力ありがとうございました。 – CoderBaby

関連する問題