在全民互聯(lián)網(wǎng)的今天,各大社交網(wǎng)絡(luò)異橙俨。活躍码撰。當(dāng)然網(wǎng)絡(luò)上的游客也會有參差不齊,有時會說一些臟話个盆。但是當(dāng)這些臟話說出去的時候就變成了“******”被自動屏蔽了脖岛。這其實是社交平臺的基本功能。
今日颊亮,CoCo醬偶然發(fā)現(xiàn)一位Python大神柴梆,自己用代碼來實現(xiàn)了這個功能。一起來膜拜大神吧终惑!
首先來看看核心的功能替換臟話代碼如下:
是不是簡單輕松的就把臟話給屏蔽掉了呢绍在,這導(dǎo)入了時間模塊datetime用來獲取現(xiàn)在本地時間,后面會用來寫入日志保存
當(dāng)然很多游戲?qū)υ捓锩嬉矔@示當(dāng)前時間,然后speak是玩家要輸出的臟話(現(xiàn)在是演示后面會改成Input真正的輸入交互)揣苏,dirty是定義的臟話庫(當(dāng)然沒寫太多因為每地域都不同太多了寫不完)悯嗓,后面跟一個for循環(huán)來檢索
只要你說的話里面包含臟話庫內(nèi),那么我們就用replace替換掉卸察,最后打印也就等于公屏上顯示的字幕都是*了…當(dāng)然我們還要想那如何去跟蹤是誰什么時間都說了什么
這樣關(guān)聯(lián)就要用到類了脯厨,肯定會有疑惑為什么用類,首先類class是一類(比如桌子有方桌坑质、圓桌合武、會議桌、辦公桌等)事物描述的概括涡扼,例如一群玩家Player稼跳,他們都有各自的游戲名字name,然后都具有聊天功能(我們又稱之為動作)吃沪,這樣就既可以分類又可以達(dá)到區(qū)分的效果汤善。代碼如下:
這里就很全面的介紹了類的使用及工作流程效果,這里先創(chuàng)建一個類Player玩家類,init初始化他的名字name
其中他具備聊天功能talk,還具備日志記錄功能票彪,那么來聊天運作流程红淡,每個玩家注冊后登錄游戲會有一個游戲名字(你可以理解為登錄QQ后),這里self.name=name等于獲取到你的個人名稱(網(wǎng)名)降铸,然后打聊天窗口進(jìn)入talk在旱,self.string你輸入的聊天信息,self.log記錄日志,重點是優(yōu)先把你原本的話記入到聊天日志中這樣查可以查到你的記錄推掸,self.string.replace替換掉你說的臟話,那么屏幕上只會顯示替換后的話語例如這打印的本來是fuck編程了雅蠛蝶…
這個工作流程是不是很清晰了呢桶蝎,當(dāng)然你不了解類方法這里就會很迷糊了,慢慢來只要有這個思路學(xué)了類以后就很輕松了谅畅。
當(dāng)然不會這樣就結(jié)束登渣,最后把基本的完整代碼放出來代碼如下:
測試結(jié)果如下:
你可以新建一個文件名叫zanghua.txt空文本就行,只是用來演示存儲日志的行為效果毡泻,上面打印說change Player是為了演示不同用戶輸入做了個簡易切換,實際上的系統(tǒng)你登錄后很少切換用戶之類的绍豁,就只是當(dāng)前帳號聊天了,這里的代碼就添加文件處理方式with open (文件名牙捉,打開模式) 簡稱為 f之類的然后寫入write(記得在寫入的最后加上n換行符,不然全寫第一行很難認(rèn))關(guān)于datetime[:7]切片 把上面打印時候時間后面的余數(shù)給忽略掉更簡潔點敬飒⌒安基本上的流程如此,當(dāng)然可以有很多擴(kuò)展无拗,例如臟話次數(shù)超過多少禁止發(fā)言带到,限制發(fā)言幾分鐘啊,日志方面可以定時清空啊等等英染。這就看大家自己去研究了揽惹,代碼量就有點大了這里就不展示了被饿。最后我要說明的圖如下,有很多人估計誤解了些點什么搪搏。狭握。
這只是演示流程的思路(提供給入門開發(fā)的新手參考),歡迎大佬們研討指正疯溺。
最后還是老臺詞:希望能對學(xué)習(xí)Python的小伙伴有所幫助B勐!囱嫩!