[英]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中的缩进级别?
一般来说
每个缩进级别使用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)-1
和while 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.