如何在python中对字符串运行回文测试?

时间:2016-02-23 16:49:10

标签: python python-3.x

  

编写一个函数,该函数采用由字母组成的字符串   字符作为输入参数,如果字符串是a,则返回True   回文。回文是一个向后或相同的字符串   向前。注意,大写在这里并不重要,即较低   case字符可以被认为与大写字符相同。

这是我的代码:

def Palindrome_test_string (input_str):
    output_str = ""
    count = 0
    for k in range (len(input_str) - 1, -1, -1):
        output_str = output_str + input_str[k]
    print ("The reverse of the string is:",output_str)

    for i in range (0, len(input_str)):
        if (output_str[i] == input_str[i]):
            count += 1
        else:
            break
    if (count == len(input_str)):
        return (True)
    else:
        return (False)


#Main Program
test_str = "Radar"
result = Palindrome_test_string (test_str)
print (result)

它显示了大多数情况下的正确输出,但该程序存在一个问题。当我输入'雷达'时,它的反向应该是'radaR'并且根据问题,我必须在比较时将大写和小写字符视为相等。怎么做到这一点?任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:3)

def Palindrome_test_string(input_str):
    lower = input_str.lower()       # Store this to avoid doing it twice
    return lower == lower[::-1]

print(Palindrome_test_string('abccbA'))

这将显示:

True

注意:[::-1]字符串切片具有反转字符串的效果。

答案 1 :(得分:1)

将输入数据转换为小写。

def Palindrome_test_string (input_str):
    output_str = ""
    count = 0
    input_str = input_str.lower()
    ...

答案 2 :(得分:0)

def isPalindrome(s):
   s = s.lower()
   x = s[::-1]

   if s == x:
      return True
   return False