2017-11-30 18 views
-4
lista=[4, 22, 5, 6, 32, 81, 729, 56, 77, 31] 
listb=[] 

for k in range(len(lista)): 
     listb.append(k) 
def cs(): 




    for i in range(9): 
       print(i) 
       if lista[i]<lista[i+1]: 
       print(i) 
       listb[i]=lista[i] 
       lista[i]=listb[i] 
       i+=1 
       else: 

       listb[i]=lista[i+1] 
       lista[i+1]=lista[i] 
       lista[i]=listb[i] 
       return(lista) 

print(cs()) 

実際にIamが関数内に同じものを配置すると、リストがソートされません。ただし、同じコードを関数外に配置すると、完全に機能しています。私ループ内でPythonの関数内で動作しない

+1

あなたは、コヒーレント質問にこのとりとめをしてください翻訳してもらえますか? – timgeb

+1

インデントを修正します。 'return'ステートメントは本当にループの中にあるべきですか? – scrpy

+1

'for lista:listb.append(k)'はずっときれいです。インデックスではなく、可能な限り値を反復処理します。 – chepner

答えて

0

return文では、あなたの関数でforループの外に移動する必要があり、また、あなたはそうのような、あなたの空白を整理する必要があります

lista=[4, 22, 5, 6, 32, 81, 729, 56, 77, 31] 
listb=[] 

for k in range(len(lista)): 
    listb.append(k) 

def cs(): 
    for i in range(9): 
     print(i) 
     if lista[i]<lista[i+1]: 
      print(i) 
      listb[i]=lista[i] 
      lista[i]=listb[i] 
      i+=1 
     else: 
      listb[i]=lista[i+1] 
      lista[i+1]=lista[i] 
      lista[i]=listb[i] 
    return(lista) 

print(cs()) 
関連する問題