2017-04-16 9 views
-3

に期待される出力を与えていないことはここでは私のPythonの関数である:"<" 演算子は、Python

def fifo(pageframes, pagereferencestring): 
    pages = len(pagereferencestring) 
    queue = [] 
    pagefaults = 0 

    for each in pagereferencestring: 
     if each not in queue: 
      pagefaults += 1 
      print len(queue) 
      print pageframes 
      if len(queue) < pageframes: 
       print "hello" 
       queue.append(each) 
      else: 
       queue = queue[1:] 
       queue.append[each] 
      print queue 
    print "FIFO mode : " + str(pagefaults) 

私はpageframes = 3、およびpagereferencestring = [1,2,3,4,1,2,3を入力しています、= 16

4,1,2,3,4,1,2,3,4]、およびそのページはここで、出力は私が取得していますされています

0 


3 


hello 



[1] 



1 


3 


hello 


[1, 2] 



2 


3 


hello 


[1, 2, 3] 


3 


3 


hello 


[1, 2, 3, 4] 


FIFO mode : 4 

をここに私の質問です:通りlen(queue)== pageframes(= 3)であっても出力から明らかで、コントロールがif条件に入る(len(キュー)<ページフレームの場合にのみ発生します)。なぜこうなった?

+5

コード内のどこにでも '=='がありません –

+0

私は "<"演算子を意味していました。申し訳ありませんが、質問を編集しました。 – kudesiaji

+0

コードに構文エラーがあります。正しくコピー/貼り付けしていますか? – muratgu

答えて

0

これは、原因が:queue.append[each]と考えられます。正しくはqueue.append(each)にする必要があります。

EDIT:のpython 2.7でテスト

それが正常に動作します。ここでは、あなたがコピー貼りを呼び出し、それがあなたのために働くかどうかをテストするために使用したコードを示します。

def fifo(pageframes, pagereferencestring): 
    pages = len(pagereferencestring) 
    queue = [] 
    pagefaults = 0 

    for each in pagereferencestring: 
     if each not in queue: 
      pagefaults += 1 
      print len(queue) 
      print pageframes 
      if len(queue) < pageframes: 
       print "hello" 
       queue.append(each) 
      else: 
       queue = queue[1:] 
       queue.append(each) 
      print queue 
    print "FIFO mode : " + str(pagefaults) 

pageframes = 3 
pagereferencestring = [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4] 
fifo(pageframes, pagereferencestring) 
+0

それを試してみてください。出力に何の違いもありません。 – kudesiaji

0

私はpython 3.5を使用しているためにprintステートメントを変更する以外は、2番目のappendステートメントをuse()に調整しなければなりませんでした。それは私のためにうまく動作します。

+0

私はPython 2.7を使用しています。 append文を修正しても同じ出力が得られます。問題は比較文にあります。 – kudesiaji

0

私はメインフレームの文字列としてページフレームを渡していましたが、整数ではありませんでした。したがって、比較は2つの整数ではなく、intとstringを比較していたので、コアでは機能しませんでした。