使用递归时如何使用 Python 确保单词是回文?
How can I make sure a word is palindrome using Python while using recursion?
我正在尝试创建一个代码,其中 python 要求用户输入或输入一个单词,它必须使用递归检查它是否是回文。如果单词不是通过 reverse() 函数的回文,它将接受字符串,并通过递归,return 该字符串反向。似乎我能够接受输入,当我输入一个不是回文的单词时,它会返回所需的输出。但是,它不会反向返回单词,而且当我输入一个回文单词时,它不会返回输入,在输出中留下空白 space。
def reverse(choice, index, new_word):
if index < 0:
return new_word
else:
new_word += choice[index]
return reverse (choice, index - 1, new_word)
def palindrome():
new_word = ""
choice = input("Please enter a word to check if it is palindrome:")
result = reverse(choice, len(choice) - 1, new_word)
if result == choice:
print("That word",choice,"IS a palindrome")
else:
print("Sorry,",new_word,"is NOT a palindrome")
palindrome()
发生这种情况是因为您已将 new_word
设置为空字符串,然后您获取 reverse()
的结果并将其存储在另一个名为 result
的变量中。
这应该可以解决您的问题:
def palindrome():
new_word = ""
choice = input("Please enter a word to check if it is palindrome:")
result = reverse(choice, len(choice) - 1, new_word)
if result == choice:
print("That word",choice,"IS a palindrome")
else:
# change here to result
print("Sorry,",result,"is NOT a palindrome")
或者,您可以使用 choice[::-1]
反转字符串。它更干净,您不必使用递归。但是,上述修复也将帮助您解决递归问题。
尝试以下操作:
def check_palindrome(word): # Creating function with 1 parameter: word
if word == word[:: -1]: # word[:: -1] reverses a string
return True # Return a true value if word is the same when reversed
else:
return False # Otherwise, return a false value
print(check_palindrome("racecar")) # Palindrome
print(check_palindrome("hello world")) # Not a palindrome
语法 word[:: -1]
颠倒单词。
我正在尝试创建一个代码,其中 python 要求用户输入或输入一个单词,它必须使用递归检查它是否是回文。如果单词不是通过 reverse() 函数的回文,它将接受字符串,并通过递归,return 该字符串反向。似乎我能够接受输入,当我输入一个不是回文的单词时,它会返回所需的输出。但是,它不会反向返回单词,而且当我输入一个回文单词时,它不会返回输入,在输出中留下空白 space。
def reverse(choice, index, new_word):
if index < 0:
return new_word
else:
new_word += choice[index]
return reverse (choice, index - 1, new_word)
def palindrome():
new_word = ""
choice = input("Please enter a word to check if it is palindrome:")
result = reverse(choice, len(choice) - 1, new_word)
if result == choice:
print("That word",choice,"IS a palindrome")
else:
print("Sorry,",new_word,"is NOT a palindrome")
palindrome()
发生这种情况是因为您已将 new_word
设置为空字符串,然后您获取 reverse()
的结果并将其存储在另一个名为 result
的变量中。
这应该可以解决您的问题:
def palindrome():
new_word = ""
choice = input("Please enter a word to check if it is palindrome:")
result = reverse(choice, len(choice) - 1, new_word)
if result == choice:
print("That word",choice,"IS a palindrome")
else:
# change here to result
print("Sorry,",result,"is NOT a palindrome")
或者,您可以使用 choice[::-1]
反转字符串。它更干净,您不必使用递归。但是,上述修复也将帮助您解决递归问题。
尝试以下操作:
def check_palindrome(word): # Creating function with 1 parameter: word
if word == word[:: -1]: # word[:: -1] reverses a string
return True # Return a true value if word is the same when reversed
else:
return False # Otherwise, return a false value
print(check_palindrome("racecar")) # Palindrome
print(check_palindrome("hello world")) # Not a palindrome
语法 word[:: -1]
颠倒单词。