繁体   English   中英

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

[英]Indentation Style in Python : Reverse Words Function

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中的缩进级别?

您可以在PEP8中查看缩进部分

一般来说

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

(不要混用制表符和空格)。

当开始一个新块的主体时(例如,在if和`while中),相对于引入该块的行,使主体缩进4个空格。

所以当你写

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

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


另外,请注意,您可以使用以下命令检查两个单词是否彼此反向匹配

def is_reverse(word1, word2):
    return word1 == reversed(word2)

一般规则是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

缩进在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"

在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM