Python - 不会返回false

时间:2015-12-04 23:27:11

标签: debugging

我在调试时遇到问题,我有一个功能,它从以前的功能中获取了一些变量,这里有太多不能发布的内容,我猜,但它们都按预期工作并通过项目自动mooshak测试,但是在一个函数的这个特定块上,我不能让它返回false。

如果我在"调试器"上给出它的参数,它会打印(' a')符合给定的条件,但它不会返回。任何可能导致这种情况的想法?

编辑:这是我的整个功能。

    def ask_play(t):
        # Creates a string to be used on the input msg that follows the projet rulles, (coordenada_linha(etc...)) are the used to calculate the maximum dimensions of the board.

        dim = str('(') + str((coordenada_linha(tabuleiro_dimensoes(t)))) + str(' : ') + str((coordenada_coluna(tabuleiro_dimensoes(t)))) + str(')')

        # Creates the input message.
        msg = 'Introduza uma jogada\n - coordenada entre (1 : 1) e ' + str(dim) +' >> '

        # xy picks the inputed (x : y) from the input and turns into (x ,y) so we can compare them to the maximum and minimum accepted coordenates.
        xy = eval((input(msg)).replace(' : ' , ', '))

        # Valor is just the number the coordenate should recieve.
        valor = int(input(' - valor >> '))

        # maxdim is the "highest coordenate on the board" in this case it's (5, 5)    
        maxdim = (((coordenada_linha(tabuleiro_dimensoes(t)))), ((coordenada_coluna(tabuleiro_dimensoes(t)))))

        # checks if the first input is a coordenate that is "inside" the grid, if it isn't, SHOULD return false, else it returns coordenate + given value
        if not ((((xy) >= (1, 1)) and ((xy) <= (maxdim)))):
            return False
        else:
            return cria_jogada(cria_coordenada(coordenada_linha(xy), coordenada_coluna(xy)), valor)

祝你好运

1 个答案:

答案 0 :(得分:0)

检查文本编辑器是否有混合标签和空格?这个coding horror blog post描述了我担心的问题。

我的猜测是读起来像

if not ((((xy) >= (1, 1)) and ((xy) <= maxdim))):
....print('a')
> > return False

或类似的。 Python会计算制表符和空格 - 您的缩进级别 - 以确定哪些条件,循环或函数的代码。如果混合使用制表符和空格,Python可能会对哪些代码属于哪个块感到困惑。我怀疑返回声明正在遭受这个问题。

例如,在记事本++中,您可以选择菜单项

View->Show Symbol->Show White Space and Tab

使其显示制表符和空格字符。如果某些行使用制表符和一些空格,请将它们更改为相同 - 将制表符转换为空格。