回文词校验函数:python3
Palindrome words check function : python 3
is_palindrome 函数检查字符串是否为回文。回文是一个字符串,可以从左到右或从右到左读取,省略空格,并忽略大小写。回文的例子有像 kayak 和 radar 这样的词,以及像“Never Odd or Even”这样的短语。将此函数中的空白填入 return 如果传递的字符串是回文,则为 True,否则为 False。
def is_palindrome(input_string):
# We'll create two strings, to compare them
new_string = ""
reverse_string = ""
# Traverse through each letter of the input string
for letter in input_string:
# Add any non-blank letters to the
# end of one string, and to the front
# of the other string.
if letter != " ":
new_string += letter
reverse_string = letter + reverse_string
return new_string
# Compare the strings
if new_string.lower() == reverse_string.lower():
return True
return False
print(is_palindrome("Never Odd or Even")) # Should be True
print(is_palindrome("abc")) # Should be False
print(is_palindrome("kayak")) # Should be True
有几个问题:
y
变量应该从 -1 开始,因为它应该引用最后一个字符。
- 对
y
的增量更改未正确缩进,因为它应该是 for
循环的一部分
input_string[y]
是个好主意,但您需要一个单独的 if
条件来检查该字符是否为非空白
- 有一个
return new_string
语句不应该存在,因为最后的if
仍然需要执行
我还应该注意,这个模板代码非常严格,并没有提倡 pythonic 编码风格,但这里是对上述问题的更正:
def is_palindrome(input_string):
new_string = ""
reverse_string = ""
y = -1 # must be -1 not 1
for letter in input_string:
if letter != " ":
new_string += letter
if input_string[y] != " ": # separate condition
reverse_string += input_string[y]
y -= 1 # fixed indentation
if new_string.lower() == reverse_string.lower(): # added condition
return True
return False
同样,这不是最优雅的解决方案,也不是很有效。
is_palindrome 函数检查字符串是否为回文。回文是一个字符串,可以从左到右或从右到左读取,省略空格,并忽略大小写。回文的例子有像 kayak 和 radar 这样的词,以及像“Never Odd or Even”这样的短语。将此函数中的空白填入 return 如果传递的字符串是回文,则为 True,否则为 False。
def is_palindrome(input_string):
# We'll create two strings, to compare them
new_string = ""
reverse_string = ""
# Traverse through each letter of the input string
for letter in input_string:
# Add any non-blank letters to the
# end of one string, and to the front
# of the other string.
if letter != " ":
new_string += letter
reverse_string = letter + reverse_string
return new_string
# Compare the strings
if new_string.lower() == reverse_string.lower():
return True
return False
print(is_palindrome("Never Odd or Even")) # Should be True
print(is_palindrome("abc")) # Should be False
print(is_palindrome("kayak")) # Should be True
有几个问题:
y
变量应该从 -1 开始,因为它应该引用最后一个字符。- 对
y
的增量更改未正确缩进,因为它应该是for
循环的一部分 input_string[y]
是个好主意,但您需要一个单独的if
条件来检查该字符是否为非空白- 有一个
return new_string
语句不应该存在,因为最后的if
仍然需要执行
我还应该注意,这个模板代码非常严格,并没有提倡 pythonic 编码风格,但这里是对上述问题的更正:
def is_palindrome(input_string):
new_string = ""
reverse_string = ""
y = -1 # must be -1 not 1
for letter in input_string:
if letter != " ":
new_string += letter
if input_string[y] != " ": # separate condition
reverse_string += input_string[y]
y -= 1 # fixed indentation
if new_string.lower() == reverse_string.lower(): # added condition
return True
return False
同样,这不是最优雅的解决方案,也不是很有效。