Python密碼器講解

2021-10-04 17:31:28 字數 4188 閱讀 9891

我們今天這一篇,就來講解這一長串**。

from pyqt5.qtgui import qfont

from pyqt5.qtcore import qt

import sys,os,shutil,sip

class

example

(qwidget)

:def

__init__

(self)

:super()

.__init__(

) self.settings(

)def

settings

(self)

: self.combo = qcombobox(self)

self.combo.additem("")

self.combo.additem(

"摩爾碼加密"

) self.combo.additem(

"倒置加密"

) self.combo.move(

150,10)

self.combo.activated[

str]

.connect(self.remember)

self.say = qlabel(self)

self.say.settext(

' '

) self.say.setfont(qfont(

'黑體',20

))self.say.move(90,

100)

self.choice = qlabel(self)

self.choice.settext(

'請選擇加密方式:'

) self.choice.setfont(qfont(

'黑體',12

))self.choice.move(15,

12.5

) self.info = qlineedit(self)

self.info.setplaceholdertext(

'請輸入加密內容'

) self.info.move(15,

50)self.yes = qpushbutton(

'確定'

,self)

self.yes.move(

200,

150)

self.yes.clicked.connect(self.yes_)

self.setgeometry(

300,

300,

300,

200)

self.setwindowtitle(

'密碼器'

) self.show(

)def

remember

(self, text)

: self.unit = text

defyes_

(self)

:try

:if self.unit ==

'摩爾碼加密'

: dict1 =

ls =

list

(self.info.text())

keyword_ls =

for i in

range

(len

(ls)):

])keyword =

' '.join(keyword_ls)

if'生成密碼目錄'

notin os.listdir(

'./'):

os.mkdir(

'生成密碼目錄'

)else

: shutil.rmtree(

'./生成密碼目錄'

) os.mkdir(

'./生成密碼目錄'

) where =

open

('./摩爾碼加密內容.txt'

,'w'

) where.write(keyword)

self.say.settext(

'錄入成功'

) where.close(

)if self.unit ==

'倒置加密'

: ls =

list

(self.info.text())

ls.reverse()if

'生成密碼目錄'

notin os.listdir(

'./'):

os.mkdir(

'生成密碼目錄'

)else

: shutil.rmtree(

'./生成密碼目錄'

) os.mkdir(

'./生成密碼目錄'

) where =

open

('./生成密碼目錄/倒置加密內容.txt'

,'w'

) where.writelines(ls)

self.say.settext(

'錄入成功'

) where.close(

)except

: self.say.settext(

'錄入失敗'

)if __name__ ==

'__main__'

: ex = example())

)首先解包,你們可能看這個**覺得很怪,沒辦法,複製過來就這樣。大家可以修改一下。然後我們建立類這些的沒問題吧。settings的那一段,有乙個知識點,就是下拉選框。這個東西我在gui教程裡會說,所以這裡大家就看一下吧。大概意思就是把你選擇的東西記錄下來,用qcombobox建立。朋友們可以先去學習一下,或者等到我出下拉選框的教程時再回頭看看。

設定標籤的沒問題吧。至於為什麼要空的,這個其實你可以改改,畢竟這只是乙個框架。這個remeber函式就是記錄你下拉選框的選擇。因為下拉選框繫結後會把你選擇的內容賦值到繫結**的引數中。但是這個text又只能在這個方法中用,所以需要用self.來記錄。其實這有更好的方法,不過我為了編的快一些,所以有些冗餘。大家可以自行修改。呵呵

下面的yes_中,首先使用異常處理,因為這裡面有開啟檔案,我不用with開啟檔案,是因為問題也有可能不出在檔案開啟,所以就用try+except。然後就是判斷。

摩爾碼加密裡,首先有乙個字典。表示摩爾碼與字母數字的互換。

然後因為是每個字母/數字對應一串摩爾碼。所以需要用list函式來轉換,這樣就是每乙個字母/數字都為一項。大家不明白,可用print函式列印一下ls。

然後建立乙個輸入到檔案裡的列表(就是將字母/數字轉換後的列表),迴圈的話大家自己分析(還是講講吧…):

首先,迴圈ls的長度,這個沒問題吧。

然後給keyword_ls列表增加ls裡的每一項對應的摩爾碼。那該怎麼增加呢?

ls[i]其實就是遍歷列表,然後將ls[i]作為鍵,然後在dict1找到對應的值,也就是對應的摩爾碼。最後加到keyword_ls的末尾。

然後將keyword_ls變為字串,名字為keyword。其實可以用writelines寫入列表(沒試過,大家可以試試),但是我更喜歡轉為字串。可是在倒置加密的時候我就是寫入列表(前後矛盾!!!)。不廢話了,接下來是寫入檔案,這一段非常有用,我給大家複製過來:

if

'生成密碼目錄'

notin os.listdir(

'./'):

os.mkdir(

'生成密碼目錄'

)else

: shutil.rmtree(

'./生成密碼目錄'

) os.mkdir(

'./生成密碼目錄'

)

這一段是覆蓋資料夾,因為os的mkdir如果已有檔案,就會報錯,所以用這個就可以判斷有沒有某個名字的資料夾。當然,你用異常處理也行。不過我喜歡用這個。

然後是寫入檔案,這個沒問題吧。

倒置加密其實就是列表的reverse功能,然後就是寫入檔案了。

然後如果報錯,就處理為『錄入失敗』。接著就有結果了。大家如果還有什麼加密方法,可以自己加上去喲!

python裝飾器講解筆記

公共 判斷乙個數是否是質數def is prime num if num 2 return false elif num 2 return true else for i in range 2 num if num i 0 return false return true1 不帶有裝飾器def pr...

python裝飾器,細緻講解

args,kwargs 命名空間與作用域 命名空間的 巢狀 是在函式定義階段,即檢測語法的時候確定的 函式物件 函式的巢狀定義 閉包函式 傳遞函式的方式 通過引數的形式為函式傳值 通過閉包的方式為函式傳值 什麼是裝飾器 為何要用裝飾器 需求 在不修改index函式源 以及呼叫方式的情況下為其新增統計...

python裝飾器 閉包 垃圾講解

第一部分裝飾器,接觸很久,沒理會原理。慚愧。第二部分裝飾器傳參的小實踐。第三部分閉包的理解,如果有錯誤,留著,以後再說。其本意就是在不改變原函式的基礎上,對函式新增功能。用途呢,aop思想,你說是吧。乙個自己寫裝飾器的例子 定義裝飾器 這種寫法比較適合簡單的包裹,只是會把real func前面 裹住...