2017-12-09 13 views
0

whileループの一部であるリストに値を挿入しようとしていますが、最後の値を挿入するのではなく、前の値に置き換えていますので、リストには常に1つの値しかありません!値がそれらを交換しない追加し、ここに私のコードは次のとおりです。リストに値を挿入する

while X != 1: 
    resultList = []; 
    #extList = [] 
    count += 1 
    if X % 2: 
     X = 3 * X + 1 
    elif not X % 2: 
     X = X // 2 #important to use double slash to have a integer division 
    print(X) 
    resultList.insert(count-1, X) 
    #print("the resultList is " + str(resultList)) 

    #extList.extend(resultList) 

print("The inputValue "+str(originalValue)+" took "+str(count)+" calculations to reach 1") 
print (resultList) 

任意のヘルプが

+1

'resultList.insert(カウント-1を、X)を' '' –

+2

resultList = [] '、おそらくあなたが書いている' while' – f5r5e5d

+0

の内側にあってはならない 'resultList.append(X)でなければなりませんC++コードのようなPythonコード。強力なツールを使用してください。 – user1767754

答えて

2

を高く評価している問題はここにある:

while X != 1: 
    resultList = []; 
    #etc 

あなたがの各反復でリストを再作成していますロop。したがって、最後には1つの値のみがあり、最後の反復では唯一の値が挿入されます。そのようなループの外に割り当てを取る

resultList = []; 
while X != 1: 
    #etc 

は、問題を..fixes。

追加のノートでは、あなたがここで行ったことは不要である:

elif not X % 2: 
    X = X // 2 

あなたが繰り返して、あなたの元の状態を反転する必要はありません。あなたは単にそれをelseにすることができます。 whileループの各反復で

if X % 2: 
    X = 3 * X + 1 
else: 
    X = X // 2 
3

あなたは​​リストの新しいインスタンスを作成します。

while X != 1: 
    resultList = []; 
... 

resultList = []; 
while X != 1: 
    ... 

に置き換えてくださいそして、あなたはappendメソッドを使用することができlistの最後に新しい要素を追加します。同様

resultList = []; 
while X != 1: 
    if X % 2: 
     X = 3 * X + 1 
    else: 
     X = X // 2 #important to use double slash to have a integer division 
    print(X) 
    resultList.append(X) 
関連する問題