“<”运算符不在Python中给出预期的输出

时间:2017-04-16 23:10:32

标签: python operators

这是我的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(队列)&lt; pageframes时才会发生) 。为什么会这样?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

除了更改print语句,因为我使用python 3.5我必须调整你的第二个append语句使用()。它对我来说很好。

答案 2 :(得分:0)

想出来。 我将pageframes作为主体中的字符串传递,而不是整数。因此,比较并不是有效的,因为它不是比较两个整数,而是一个int和一个字符串。