Python中的缩进样式:反向词功能

时间:2017-05-18 12:33:22

标签: python indentation

def is_reverse(word1, word2):
    if len(word1) != len(word2):
             return False
           i = 0
           j = len(word2)

    while j > 0:
                  if word1[i] != word2[j]:
                            return False
                    i = i+1
                    j = j-1

               return True

is_reverse('pots', 'stop')

我已经定义了上面的函数来检查两个给定的单词是否相互匹配。

但是当我运行它时,它会一直提醒我缩进错误。

如何衡量python中的缩进级别?

4 个答案:

答案 0 :(得分:3)

您可以查看Indentation Section in PEP8

一般

  

每个缩进级别使用4个空格。

(不要混合标签和空格)。

当您启动新块的主体时(例如,在if和`while)中,保持主体相对于引入块的行缩进4个空格。

所以当你写

if len(word1) != len(word2):
    ...
    ...

如果条件发生,应该发生的所有事情,例如,相对于if应该有4个空格。如果内部有另一个ifwhile,则会进一步增加其主体的缩进4个空格,依此类推。

作为旁注,请注意您可以使用

检查两个单词是否相互反向匹配
def is_reverse(word1, word2):
    return word1 == reversed(word2)

答案 1 :(得分:1)

  

一般规则是4空格缩进。

以下是正确缩进的示例,不更改原始代码:

def is_reverse(word1, word2):
    if len(word1) != len(word2):
        return False
    i = 0
    j = len(word2)

    while j > 0:
        if word1[i] != word2[j]:
            return False
        i = i+1
        j = j-1

    return True

答案 2 :(得分:1)

缩进在python中很重要,因为它定义了哪些代码属于一起(例如,使用其他语言的括号)。

由于您的代码格式错误,请查看重新格式化的代码:

def is_reverse(word1, word2):
    if len(word1) != len(word2):
        return False
    i = 0
    j = len(word2)-1

    while j >= 0:
        if word1[i] != word2[j]:
            return False
        i = i+1
        j = j-1
    return True

is_reverse('pots', 'stop')
-> True

注意我也改变了j = len(word2)-1while j >= 0:,因为长度为x的单词在位置0..x-1中有字母。

提示:使用切片表示法和步长为-1:

可以实现字符串反转
"pots"[::-1] == "stop"

答案 3 :(得分:0)

python中用于缩进级别的空格数在语法上并不重要,它可以是任意数字(在大多数情况下,每个级别使用2个,4个或8个空格),但它必须是一致的。因此,在if块之后,您必须返回到之前相同的缩进级别,如下所示:

def is_reverse(word1, word2):
    if len(word1) != len(word2):
             return False

    i = 0
    j = len(word2)

    while j > 0:
                  if word1[i] != word2[j]:
                            return False
                  i = i+1
                  j = j-1

    return True

is_reverse('pots', 'stop')

此代码不会抛出IndentationError。当然,出于风格原因,有一个恒定的缩进级别是很好的,如下所示:

def is_reverse(word1, word2):
    if len(word1) != len(word2):
        return False

    i = 0
    j = len(word2)

    while j > 0:
        if word1[i] != word2[j]:
            return False
        i = i+1
        j = j-1

    return True

is_reverse('pots', 'stop')

您的代码也有一个逻辑错误,因为j的起始值应该比字符串的长度小1(由于基于零的索引),并且一直向下变为0,如下所示:

    i = 0
    j = len(word2) - 1

    while j >= 0:
        if word1[i] != word2[j]:
            return False
        i = i+1
        j = j-1