【问题标题】:Whether the input is a palidrome or not输入是否为回文
【发布时间】:2018-04-15 10:46:54
【问题描述】:

所以,我正在编写一个代码来检查输入的字符串是否为回文,我编写了以下代码,但它不能正常工作,例如,如果我输入“race”它仍然显示 TRUE,虽然它应该说 FALSE,请帮忙。 这是代码

string = input("Please enter any word: ")
a = 0
string_length = len(string)
for string_index in range(string_length-1, -1, -1):
    character = string[string_index]
    if string[a] == character:
        a = a + 1
        b = "TRUE"
    else:
        b = "FALSE"
print(b) 

【问题讨论】:

标签: python python-3.x palindrome


【解决方案1】:

正确的代码:

a = 0
string_length = len(string)
for string_index in range(string_length-1, -1, -1):
    character = string[string_index]
    if string[a] == character:
        a = a + 1
        b = "TRUE"
    else:
        b = "FALSE"
        break;  # this line was missing
print(b) 

【讨论】:

  • 刚刚写了这个 (a = a + 1),在倒数第二行,而不是前一行,它为我完成了这项工作,谢谢
【解决方案2】:

除了this answer by מתן ל

您可以在反转时轻松地将输入与自身进行比较 - 列表理解使这变得微不足道:

简单的 1 字和区分大小写的测试:

word = "SomemoS"
print(word == word[::-1])  # word[::-1] simply reverses the word and prints True if same

不区分大小写并允许标点符号

一个回文可以从两边读取。根据回文规则,您可能允许忽略大小写,甚至消除空格和 标点符号。

  • 申请lower()
  • 不要在意空格和标点符号

word = [c.lower() for c in "No, it can assess an action." if c not in ',. !?']
print(word == word[::-1])  # True as well

【讨论】:

【解决方案3】:
string = input("Please enter any word: ")
string_length = len(string)
start_index = 0
count = 0 
end_index = string_length - 1
for string_index in range(int(string_length/2)):
    if string[start_index] == string[end_index]:
        start_index = start_index + 1
        end_index = end_index - 1
        count += 1
    else:
        pass
print("Palendrome") if count == int(string_length/2) else print("Not Palendrome")

说明: 要检查palendrome字符串,比较第一个和最后一个字符,直到比较到字符串的中间

for string_index in range(int(string_length/2)):

比较第一个字符和最后一个字符:

if string[start_index] == string[end_index]:

更新 start_index 和 end_index 和计数:

start_index = start_index + 1
end_index = end_index - 1
count += 1

如果 count 等于字符串长度的一半,那么它肯定是一个 Palendrome

print("Palendrome") if count == int(string_length/2) else print("Not Palendrome")

【讨论】:

  • 感谢您的帮助,但这有点复杂 xD,这是可以理解的,但我更喜欢我的,但我感谢您的努力,非常感谢
猜你喜欢
  • 2016-04-19
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
相关资源
最近更新 更多