1

みんな!私はPythonプログラミングの初心者です。指定された入力リストを逆にするpythonプログラムを書いています。以下はそのコードです。

    L1=list(input("Enter the numbers of list to be reversed : "))
    L2=[]

    def rever(La,Lb):
     if len(Lb)==0: 
      return La                               
     else:
      return rever(La.append(Lb.pop(0)),Lb)

    print rever(L2,L1)

たとえば、入力すると、

    1,2,3

出力は、

    [3,2,1]

しかし、これは起こっていません。Python で次のエラーが発生しています。

    Traceback (most recent call last):
      File "Q3.py", line 10, in <module>
        print rever(L2,L1)
      File "Q3.py", line 8, in rever
        return rever(La.append(Lb.pop(0)),Lb)
      File "Q3.py", line 8, in rever
        return rever(La.append(Lb.pop(0)),Lb)
    AttributeError: 'NoneType' object has no attribute 'append'

理解できません。私を助けてください!!

4

3 に答える 3

1

ポップして追加するのではなく、これを見るべきかもしれません

In [5]: L1=list(input("Enter the numbers of list to be reversed : "))
Enter the numbers of list to be reversed : 1,2,3,4,5

In [6]: L1
Out[6]: [1, 2, 3, 4, 5]

In [7]: L2 = L1[::-1]

In [8]: L2
Out[8]: [5, 4, 3, 2, 1]
于 2013-02-20T07:00:32.123 に答える
1

いくつかの問題があります。最初の作業方法:

def rever(La,Lb):
    if len(Lb)==0: 
        return La
    else:
        La.append(Lb.pop())
        return rever(La,Lb)

list.appendつまり、None を返します。再帰で引数として渡しLa.appendているため、2 回目の反復でエラーが発生します。

あなたがそのようにやりたいのなら、あなたはそれをすることができます

return rever(La + [Lb.pop()], Lb)

2番目の問題は、前面から飛び出して追加していることです。したがって、同じ注文が得られます。代わりに、末尾をポップして (ポップする引数はありません)、追加します。

于 2013-02-20T07:06:22.077 に答える