2017-11-17 4 views
1

に続いては、私のコードです:私は1桁目が新しいリストに追加された番号のリストを持って、そして最後に、その後、第二、そして第二の最後とそう

def alt_ele(): 
    mylist=list(input("Enter the elements: ")) 
    newlist=[int(i) for i in mylist] 
    final_list=[] 
    try: 
     for x in range(len(newlist)): 
      final_list.append(newlist.pop(0)) 
      final_list.append(newlist.pop()) 
      print(final_list) 
    except IndexError: 
     pass 

私が与えている入力次のとおりです。

I/N:12345
マイ所望の出力が[1,5,2,4,3]
あるしかし、私は実際に取得しています出力は次のとおりです:

[1,5] 
[1,5,2,4] 
要素を入力します。

誰かが私がどこに間違っているのか理解してもらえますか?私はしようとしましたが、私は自分でそれを理解することはできません ありがとうございます。

+0

はここで長い例です: '「123456789」 - > [1,9,2 、8,3,7,5,6]。それは理にかなっていますか? – Sebastian

+0

@セバスチャンはい、あなたは4を忘れていると仮定します:) – timgeb

答えて

1

現在、ループの繰り返しごとにリストを印刷しています。インデントには注意してください。

それは次のようになります。

for x in range(len(newlist)): 
    final_list.append(newlist.pop(0)) 
    final_list.append(newlist.pop()) 
print(final_list) 
+0

ああええ...それを指摘してくれてありがとう。 – Asish

2

print文がtry/except句の後にする必要があります。これにより

def alt_ele(): 
    mylist=list(input("Enter the elements: ")) 
    newlist=[int(i) for i in mylist] 
    final_list=[] 
    try: 
     for x in range(len(newlist)): 
      final_list.append(newlist.pop(0)) 
      final_list.append(newlist.pop()) 
    except IndexError: 
     pass 
    print(final_list) 

、我々は所望の出力を得ます。

私はので、ここで句try/exceptを回避する一つの方法だ、これが最善の解決策だとは思わない:

def alt_ele(): 
    mylist=list(input("Enter the elements: ")) 
    newlist=[int(i) for i in mylist] 
    final_list=[] 
    switch = False 
    while newlist: 
     final_list.append(newlist.pop(-switch)) 
     switch = not switch 
    print(final_list) 
+0

あなたは本当に 'pop'文の周りに' try'だけ必要です。 –

+0

真ですが、彼自身の関数に対しては最小限の編集をしようとしました。私は 'for'ループをここでは使用しませんが、' while newlist'の代わりに 'for'ループを使うことは決してできません。 – Sebastian

+0

「スイッチ」は正確にここで何をしているのか教えてください。なぜなら、newlist.pop(switch)を直接与えると、ジョブは実行されるからです。 – Asish

関連する問題