我现在正在做 Google 的 Python 教程,并且正在完成文件 list1.py。
我应该def match_ends(words)
用我自己的代码填写该部分,该代码应该计算输入中有多少单词words
同时具有:超过 2 个字母以及相同的开头和结尾字母。
当我运行我使用 python 2.7 编写的代码时,它运行良好。但是当我使用 3.2 运行它时,它没有。此外,当我在 IDLE 3.2 中键入它说有问题的行时,麻烦的行运行良好。
这是 list1.py:
def match_ends(words):
count = 0
for x in words:
if len(x) >= 2 and x[0] == x[len(x)-1]:
count += 1
return count
def test(got, expected):
if got == expected:
prefix = ' OK '
else:
prefix = ' X '
print('%s got: %s expected: %s' % (prefix, repr(got), repr(expected)))
def main():
print('match_ends')
test(match_ends(['aba', 'xyz', 'aa', 'x', 'bbb']), 3)
test(match_ends(['', 'x', 'xy', 'xyx', 'xx']), 2)
test(match_ends(['aaa', 'be', 'abc', 'hello']), 1)
if __name__ == '__main__':
main()
当我在 Python 2.7 的命令行中运行它时,它工作正常,输出:
OK got: 3 expected: 3
OK got: 2 expected: 2
OK got: 1 expected: 1
当我在 Python 3.2 的命令行中运行它时,它不起作用,输出:
File "D:\Projects\Programming\Python\Tutorials\Google Python Class\google-python-exercises\basic\list1.py", line 26
if len(x) >= 2 and x[0] == x[len(x)-1]:
^
TabError: inconsistent use of tabs and spaces in indentation
最后,当我使用 IDLE 3.2 时,我得到:
>>> def match_ends(words):
count = 0
for x in words:
if len(x) >= 2 and x[0] == x[len(x)-1]:
count += 1
return count
>>> match_ends(["heh", "pork", "veal", "sodas"])
2
我对 Python 非常陌生,生成的大多数错误都需要一些时间才能弄清楚,但我已经坚持了一段时间。我想不通。为什么它不能在 Python 3.2 中工作,并且只有在我执行命令行版本时才能工作?我该如何解决?