Python - 当我不希望它返回时,if语句返回True

时间:2014-07-15 20:23:44

标签: python if-statement pygame

使用我刚编写的代码,以便每次最终用户滚动时调整列表中每个项目的值,这样,当blitted时,每个项目的值基本匹配其对应对象的y坐标表面上。

我的代码背后的逻辑看看滚动时原始y坐标和新y坐标之间的差异是否保持不变,如果没有,那么它应该进入for循环,否则移动if语句后面的代码。

出于某种原因,即使我使用的两个控制变量之间没有差异,if语句也会一直返回True

我不确定我是否忽略了一些微妙的东西,这意味着它将继续返回True或者我的逻辑没有像我预期的那样工作;我的赌注是后者。

#example y values in list
yIndex = [122, 152, 212, 242]

scroll_y = 63 #initial y scroll coordinate

originalScroll_y = 63

while True:
    for event in pygame.event.get():

        #code checking whether user has scrolled
        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 4 and scroll_y != 63:
                originalScroll_y = scroll_y
                scroll_y = min(scroll_y + 15, 63)
            if event.button == 5:
                originalScroll_y = scroll_y
                scroll_y = max(scroll_y - 15, finalY + 470)

        elif event.type == MOUSEBUTTONUP and event.button == 1 and isinstance(page, MainPage):
            x, y = pygame.mouse.get_pos()

            control = originalScroll_y - scroll_y
            control2 = 0

            #e.g. if control = 15 and control2 = 15, it returns True instead
            #of False
            if control != control2:
                for k, j in enumerate(yIndex):
                    j -= control
                    yIndex[k] = j
                    control2 = control

            for i in yIndex:
                if y >= (i - 10) and y <= (i + 20):
                    if i in indexedContacts:
                        buttonSound.play()
                        sleep(0.5)
                        scroll_y = 63
                        page = EditPage()
                        page.style()
                        page.contactFields()
                        break

1 个答案:

答案 0 :(得分:4)

您有一个嵌套的if语句,因此control2设置为0

elif event.type == MOUSEBUTTONUP and event.button == 1 and isinstance(page, MainPage):
        x, y = pygame.mouse.get_pos()

        control = originalScroll_y - scroll_y
        control2 = 0 # set to 0 here
        if control != control2: # is 0 here

在if语句中,Control2永远不会是150以外的任何值。