Byte of Python学习笔记(2)——回文练习

  Byte of Python 第111页有关回文的作业练习,原题为:要想检查文本是否属于回文需要忽略其中的标点、空格与大小写。例如,“Rise to vote, sir.”是一段回文文本,但是我们现有的程序不会这么认为。你可以改进上面的程序以使它能够识别这段回文吗?如果你需要一些提示,那么这里有一个想法 :使用一个元组 来保存所有需要禁用的字符,然后使用成员资格测试来确定一个字符是否应该被移除,即 forbidden = ( ! ,? , . , ...)——原书注

  问题的关键在于如何找出字符串中的特殊字符,可以采用提示中的办法,需要注意的一点是删除了一个元素之后,原来的数组会改变,因此要注意遍历过程中的序号的问题。

  我的代码如下:

'''This is the readme of this project!

Are you OK?'''

forbindden_word = (' ',',','.','!','//','?')
def ignore_word(text):     #去除忽略的特殊字符
    strdemo = list(text)
    count = 0
    for i in list(range((len(strdemo)))):
        if strdemo[i-count] in forbindden_word:
            del strdemo[i-count] #删除特殊字符
            count += 1
    result = ''.join(strdemo)
    return result
def reverse(text):
        return text[::-1]
def is_reverse(text):   #判断是否为回文
        return text == reverse(text)

something = input('Please input some text:')
if is_reverse(ignore_word(something)):
    print(ignore_word(something))
    print('Yes!This is a reverse sentense.')
else :
    print(ignore_word(something))
    print('Oh!No!This is not a reverse sentense!')

 

posted @ 2017-11-09 21:28  捕虫少年  阅读(441)  评论(0编辑  收藏  举报