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中的缩进级别?
答案 0 :(得分:3)
您可以查看Indentation Section in PEP8:
一般
每个缩进级别使用4个空格。
(不要混合标签和空格)。
当您启动新块的主体时(例如,在if
和`while)中,保持主体相对于引入块的行缩进4个空格。
所以当你写
if len(word1) != len(word2):
...
...
如果条件发生,应该发生的所有事情,例如,相对于if
应该有4个空格。如果内部有另一个if
或while
,则会进一步增加其主体的缩进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)-1
和while 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