我是python和编程的新手,对于编写回文检测器的不同方法有疑问。
从我所知道的一点点开始,我能够使用while循环制作一个......
word = str(input("Enter a word: "))
length = len(word)
x = 0
while length-x >= x:
if word[(length-1)-x] == word[x]:
y = True
x += 1
else:
y = False
break
print (y)
但是从其他回文问题我看到了更短(更pythonic?)的方式......
word = input("Enter a word: ")
rword = word[-1::-1]
print (word == rword)
除了明显的长度差异外,使用这两种代码的优缺点是什么?此外,不确定这是否是一个愚蠢的问题,但这些问题是否被认为是递归的?
答案 0 :(得分:3)
第一个优点是不需要复制word
。这只会变得很重要(或者你需要做几百万次)。
请注意word[::-1]
就足够了,开头是隐式0
。
您的第一个代码也可以简化(并放入函数):
def is_palindrome(s):
for i in range(len(s)):
if s[i] != s[-(i + 1)]:
return False
return True