2017-09-15 13 views
-1

リストの要素を逆順に出力するこのプログラムを作成しました。それは私に正しい答えを与えているが、答えの後に別のエラーを示す。 私のコードで何が問題になっていますか?スタックを使用して逆順でリストを書き込む際にエラーが発生しました

スタッククラス

class Stack: 
    def __init__(self): 
    self.items=[] 

    def isEmpty(self): 
    return self.items==[] 

    def push(self,data): 
    self.items.append(data) 

    def size(self): 
    return len(Self.items) 

    def show(self): 
    print (self.items) 

    def peek(self): 
    return self.items[len(self.items)-1] 

    def pop(self): 
    assert not self.isEmpty() 
    return self.items.pop() 

プログラム

def reverseOrder(): 
    lista = [1,4,6,7,8,9] 
    s = Stack() 

    for i in lista: 
     s.push(i) 

    while s.isEmpty: 
     print(s.pop()) 

reverseOrder() 

と、次の私の出力です:

>>> 
RESTART: C:/Users/Dil/AppData/Local/Programs/Python/Python36-32/Tutorials/reverseOrder.py 
9 
8 
7 
6 
4 
1 
Traceback (most recent call last): 
    File "C:/Users/Dil/AppData/Local/Programs/Python/Python36-32/Tutorials/reverseOrder.py", line 35, in <module> 
    reverseOrder(); 
    File "C:/Users/Dil/AppData/Local/Programs/Python/Python36-32/Tutorials/reverseOrder.py", line 33, in reverseOrder 
    print(s.pop()); 
    File "C:/Users/Dil/AppData/Local/Programs/Python/Python36-32/Tutorials/reverseOrder.py", line 21, in pop 
    assert not self.isEmpty() 
AssertionError 
>>> 
+2

's.isEmpty'は' s.isEmpty()ではありません。 'でなければなりません。あなたの機能を呼び出す!セミコロンは使用しないでください。 – DyZ

+0

いいえ、それでは私に出力が与えられていません。そこでは条件をチェックしています。だから私は思うようにs.isEmptyでなければなりません。 – dilk

答えて

1

まあ、あなたが書いたようにすべてがうまく動作します:-)。 assertコマンドは、名前が示すように、何らかの条件をアサートします。条件が満たされれば、すべてが問題ありません。そうでない場合は、エラーが発生します。何をassertするのではなく、必要なのです:あなたはすでにそのリストをチェックしているので、

def pop(self): 
    if not self.isEmpty(): 
     return self.items.pop() 

しかし、あなたはこれを除外すべきである、whileループ内の空ではないので、それは次のようにする必要があります:

def pop(self): 
    return self.items.pop() 

として、他の人はあなたが

を使用する必要があり、代わりの

while s.isEmpty(): 

を示唆しています

+0

まだ出力されていません – dilk

+0

行: 'while s.isEmpty:'を確認してください。関数を呼び出すには、かっこを追加する必要があります。 – Fejs

+0

はい、正解..ありがとう – dilk

2
while s.isEmpty(): 
    print(s.pop()) 

これは

でなければなりません
while not s.isEmpty(): 
    print(s.pop()) 

要素が空でないうちにスタックから要素を削除します。

+1

'not s.isEmpty()'でなければなりません。 – DyZ

+0

はい。ありがとう! –

+0

まだそれは私に出力を与えません。 – dilk

関連する問題