type-of-python作業
作業練習:要想檢查文本是否屬於回文需要忽略其中的標點、空格與大小寫。例如,“Rise to vote, sir.”是一段回文文本,但是我們現有的程序不會這么認為。你可以改進上面的程序以使它能夠識別
這段回文嗎?
注:本文中用的python版本為3.70,編譯器:PyCharm edu
參考的網站:網站一,網站二,網站三,網站四:多謝前輩的指導!!!
import string
import re
# 將字符串反轉,並返回
def reverse(text):
return text[::-1]
# 檢測反轉后的字符串和最開始的字符串是否相同
def is_palindrome(text):
text0 = clear(text)
return text0 == reverse(text0)
# 將數據的字符串中的空白字符和標點符號
def clear(text):
# 去掉字符串中的空白字符
text1 = re.sub('\s','',text)
bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
# 此為中文標點符號
punc = "!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏."
# string.punctuation 此為英文標點符號
mark=''.join([punc,string.punctuation])
bytes1 = mark.encode(encoding='utf-8',errors='strict')
bytestr = text1.encode(encoding='utf-8',errors='strict')
# 去掉字符串中的標點符號
return (bytestr.translate(bytes_tabtrans,bytes1)).decode("utf-8")
# 從客戶端輸入被檢測的字符串
something = input("Enter text: ")
if is_palindrome(something):
print("Yes, it is a palindrome")
else:
print("No,it is not a palindrome" )
博客有哪里寫的不對的地方,多謝留言評論