2017-04-16 5 views
-3

의 예상 출력을 제공하지 않으면 여기 내 파이썬 함수 :"<"연산자 파이썬

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) 

I는 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 (queue) == pageframes (= 3) 인 경우에도 출력에서 ​​명확하다. 컨트롤은 if 조건을 입력한다. (len (대기열) < 페이지 프레임 인 경우에만 발생합니다). 왜 이런 일이 일어나는 걸까요?

+5

코드에서'=='이 보이지 않습니다. –

+0

"<"연산자를 의미했습니다. 죄송합니다. 질문을 수정했습니다. – kudesiaji

+0

코드에 구문 오류가 있습니다. 올바르게 복사/붙여 넣기 하시겠습니까? – muratgu

답변

0

나는 이것이 : queue.append[each]에 의한 것일 수 있다고 생각합니다. 정확하게는 queue.append(each)이어야합니다.

편집 :

파이썬 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

파이썬 3.5를 사용하기 때문에 인쇄 문을 변경하는 것 이외에 두 번째 추가 명령문()을 조정해야했습니다. 그것은 나를 위해 잘 작동합니다.

+0

파이썬 2.7을 사용하고 있습니다. append 문을 수정 한 후에도 동일한 출력을 제공합니다. 문제는 비교 문에 있습니다. – kudesiaji

0

알아 냈어. 페이지 프레임을 정수가 아닌 본체로 전달했습니다. 따라서 비교는 두 개의 정수가 아니라 int와 string을 비교 했으므로 핵심적으로 작동하지 않았습니다.