2017-04-16 51 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 ,4,1,2,3,4,1,2,3,4]等頁面= 16

這是我得到的輸出:

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(隊列)== pageframes(= 3)時,控件也會進入if條件(只有在len(隊列)< pageframes的情況下才會發生)。這是爲什麼發生?

+5

我在代碼中的任何地方都看不到'==' –

+0

我的意思是「<」運算符。對不起,編輯了這個問題。 – kudesiaji

+0

你在你的代碼中有語法錯誤,你確定你是正確的複製/粘貼嗎? – muratgu

回答

0

我認爲這可能是由於:queue.append[each]。正確的應該是queue.append(each)

編輯:

測試與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我不得不調整你的第二個append語句使用()。它對我來說工作得很好。

+0

我正在使用Python 2.7。甚至在修改append語句之後,它仍然給我提供相同的輸出。問題出在比較聲明中。 – kudesiaji

0

想通了。 我正在將pageframes作爲主體中的字符串傳遞,而不是整數。因此,比較不是正確的,因爲它不是比較兩個整數,而是一個int和一個字符串。