试试:
reverse(hello)
事实上与
print reverse(hello)
您正在打印反向的返回值。并且该返回值为无。
让我给你一些一般性的建议:
代码中的 reverse() 是具有副作用(打印)的函数。您应该避免在不需要时使用具有副作用的函数,考虑让 reverse() 返回单词而不是打印它:
def reverse(letters):
backwards = ""
i = len(letters) - 1
while i >= 0:
backwards = backwards + letters[i]
i = i - 1
return backwards
print (reverse("hello"))
而且
i = len(letters) - 1
while i >= 0:
backwards = backwards + letters[i]
i = i - 1
不容易维护,如果你向循环添加功能,减量 i=i-1 将远离它应该“概念上”的位置。您应该更喜欢与支票一起减少:
for i in xrange(len(letters)-1,-1,-1):
backwards = backwards + letters[i]
当我懒惰时,我会写
myString = myString + fewChars
所以我能理解你的懒惰。但是添加几个字符并不会修改 myString 而是创建一个新的。如果您要迭代地添加许多字符,则很少有最有效的方法是逐个添加。考虑使用 join()。例如
letters = 'word'
lettersList = [letters[i] for i in xrange(len(letters)-1,-1,-1)]
myReversed ''.join(lettersList)
好的,我同意它不可读,可能甚至更快,但对于较大的字符串,它比 newString = oldString + oneChar 方法更好。
也就是说,更多的pythonic方法
letters[::-1]
已经由比我快的人提出的建议通常效果更好,并且易于被 python 程序员阅读。