做阿里巴巴網(wǎng)站圖片大全企業(yè)官網(wǎng)網(wǎng)站
小工具實(shí)戰(zhàn)-Python實(shí)現(xiàn)小工具輸出字符串大小寫(xiě)轉(zhuǎn)換、字符串統(tǒng)計(jì)、編解碼、MD5加密
- 學(xué)習(xí)建議
- 字符串大小寫(xiě)轉(zhuǎn)換
- 實(shí)現(xiàn)思路
- 部分代碼
- 字符串統(tǒng)計(jì)
- 實(shí)現(xiàn)思路
- 部分代碼:
- 字符串編解碼
- 實(shí)現(xiàn)思路
- 部分代碼
- 字符串MD5加密
- 實(shí)現(xiàn)思路
- 部分代碼
- 小工具整體設(shè)計(jì)
- 設(shè)計(jì)思路
- 工具完整代碼實(shí)現(xiàn)
- 輸出效果
- 總結(jié)
學(xué)習(xí)建議
- 本文主要是使用Python做一些簡(jiǎn)單小工具,打印輸出即可;
- 本文涉及到的小工具有字符串大小寫(xiě)轉(zhuǎn)換、字符串統(tǒng)計(jì)、編解碼、MD5加密等等;
- 文章內(nèi)容通俗易懂,適合剛?cè)腴T(mén)Python練習(xí)基礎(chǔ)知識(shí);
- 文章中使用到了Python的標(biāo)準(zhǔn)輸入輸出、字符串基本操作、unittest框架基本使用、方法和類的使用等;
- 寫(xiě)作思路是先大概介紹每個(gè)小工具的實(shí)現(xiàn)思路,然后寫(xiě)一點(diǎn)部分代碼,最后會(huì)把所有小工具整合在一起運(yùn)行。
字符串大小寫(xiě)轉(zhuǎn)換
實(shí)現(xiàn)思路
- 根據(jù)用戶鍵盤(pán)輸入的字符串來(lái)按照要求進(jìn)行大小寫(xiě)轉(zhuǎn)換;
- 主要有大寫(xiě)轉(zhuǎn)換成小寫(xiě)、小寫(xiě)轉(zhuǎn)換成小寫(xiě)、大小寫(xiě)轉(zhuǎn)換、首字母大寫(xiě)。
部分代碼
- 詳細(xì)的代碼后續(xù)會(huì)整合在一起,這里看下部分代碼:
print(‘您選擇的是1-字符串大小寫(xiě)轉(zhuǎn)換,轉(zhuǎn)換進(jìn)行中~~~’)
print(f"大寫(xiě)轉(zhuǎn)換成小寫(xiě):{self.s.lower()}“)
print(f"小寫(xiě)轉(zhuǎn)換成小寫(xiě):{self.s.upper()}”)
print(f"大小寫(xiě)轉(zhuǎn)換:{self.s.swapcase()}“)
print(f"首字母大寫(xiě):{self.s.title()}”)
字符串統(tǒng)計(jì)
實(shí)現(xiàn)思路
- 根據(jù)輸入的字符串,先判斷一個(gè)字符是不是在該字符串中;
- 然后判斷該字符在字符串中出現(xiàn)的次數(shù);
- 去掉字符串左右空格;
- 去掉字符串左邊空格;
- 去掉字符串右邊空格。
部分代碼:
def test_case2(self):
print(‘您選擇的是2-字符串統(tǒng)計(jì)或計(jì)數(shù),轉(zhuǎn)換進(jìn)行中~~~’)
i = input(‘請(qǐng)輸入要統(tǒng)計(jì)的字符:’)
if i in self.s:
print(f"字符串統(tǒng)計(jì):{self.s.count(i)}“)
print(f"去掉字符串左右空格:{self.s.strip()}”)
print(f"去掉字符串左邊空格:{self.s.lstrip()}“)
print(f"去掉字符串右邊空格:{self.s.rstrip()}”)
else:
print(f"您輸入的字符:{i} 沒(méi)有在字符串{self.s}中")
字符串編解碼
實(shí)現(xiàn)思路
- 根據(jù)輸入字符串,將Unicode字符串轉(zhuǎn)換為字節(jié)序列;
- 將字節(jié)序列解碼為Unicode字符串。
部分代碼
def test_case3(self):
print(‘您選擇的是3-字符串編碼或解碼,轉(zhuǎn)換進(jìn)行中~~~’)
str_byte = self.s.encode(‘utf-8’)
print(f"Unicode字符串轉(zhuǎn)換為字節(jié)序列:{str_byte}“)
print(f"將字節(jié)序列解碼為Unicode字符串:{str_byte.decode(‘utf-8’)}”)
字符串MD5加密
實(shí)現(xiàn)思路
- 根據(jù)輸入的字符串進(jìn)行簡(jiǎn)單的MD5加密。
部分代碼
def test_case4(self):
print(‘您選擇的是4-字符串MD5加密,轉(zhuǎn)換進(jìn)行中~~~’)
md = hashlib.md5(self.s.encode())
md5_pass = md.hexdigest()
print(f"字符串{self.s}, md5直接加密后為:{md5_pass}")
小工具整體設(shè)計(jì)
設(shè)計(jì)思路
- 先創(chuàng)建一個(gè)類,這個(gè)類繼承于unittest框架的TestCase,目的是組織所有的用例;
- 每個(gè)用例必須按照unittest框架的規(guī)則去寫(xiě),比如函數(shù)開(kāi)頭必須為test等;
- 每個(gè)用例其實(shí)就是一個(gè)小工具,這個(gè)用例中主要實(shí)現(xiàn)對(duì)應(yīng)的小工具內(nèi)容;
- unittest框架的前置setUpClass處理小工具的開(kāi)始信息,比如提示信息或者要輸入的字符串;
- unittest框架的后置tearDownClass處理小工具的結(jié)束信息,比如結(jié)束語(yǔ)等等;
- 除了類中的方法外,還定義了一個(gè)主函數(shù)main()用來(lái)組織所有的用例執(zhí)行;
- 主函數(shù)main()中的用例執(zhí)行邏輯按照unittest框架的suite、testcase、addTest、TextTestRunner方式去組織。
- 最后就是調(diào)用main()函數(shù)即可。
工具完整代碼實(shí)現(xiàn)
import unittest
import time
import hashlibclass TestToX(unittest.TestCase):@classmethoddef setUpClass(cls) -> None:# cls.s = 'I like python, And you?'cls.s = input('請(qǐng)輸入要轉(zhuǎn)換的字符串:')print("開(kāi)始進(jìn)行轉(zhuǎn)換,請(qǐng)稍等......")print("#" * 50)@classmethoddef tearDownClass(cls) -> None:print("#" * 50)print("轉(zhuǎn)換結(jié)束,歡迎使用~,工具運(yùn)行中,您也可繼續(xù)操作-----")def test_case1(self):print('您選擇的是1-字符串大小寫(xiě)轉(zhuǎn)換,轉(zhuǎn)換進(jìn)行中~~~')print(f"大寫(xiě)轉(zhuǎn)換成小寫(xiě):{self.s.lower()}")print(f"小寫(xiě)轉(zhuǎn)換成小寫(xiě):{self.s.upper()}")print(f"大小寫(xiě)轉(zhuǎn)換:{self.s.swapcase()}")print(f"首字母大寫(xiě):{self.s.title()}")def test_case2(self):print('您選擇的是2-字符串統(tǒng)計(jì)或計(jì)數(shù),轉(zhuǎn)換進(jìn)行中~~~')i = input('請(qǐng)輸入要統(tǒng)計(jì)的字符:')if i in self.s:print(f"字符串統(tǒng)計(jì):{self.s.count(i)}")print(f"去掉字符串左右空格:{self.s.strip()}")print(f"去掉字符串左邊空格:{self.s.lstrip()}")print(f"去掉字符串右邊空格:{self.s.rstrip()}")else:print(f"您輸入的字符:{i} 沒(méi)有在字符串{self.s}中")def test_case3(self):print('您選擇的是3-字符串編碼或解碼,轉(zhuǎn)換進(jìn)行中~~~')str_byte = self.s.encode('utf-8')print(f"Unicode字符串轉(zhuǎn)換為字節(jié)序列:{str_byte}")print(f"將字節(jié)序列解碼為Unicode字符串:{str_byte.decode('utf-8')}")def test_case4(self):print('您選擇的是4-字符串MD5加密,轉(zhuǎn)換進(jìn)行中~~~')md = hashlib.md5(self.s.encode())md5_pass = md.hexdigest()print(f"字符串{self.s}, md5直接加密后為:{md5_pass}")def main():while True:print('== 1:字符串大小寫(xiě)轉(zhuǎn)換 == \n''== 2:字符串統(tǒng)計(jì)或計(jì)數(shù) == \n''== 3:字符串編碼或解碼 == \n''== 4:字符串MD5加密 == \n')num = int(input('請(qǐng)根據(jù)以上提示按要求輸入數(shù)字:'))suite = unittest.TestSuite()if num == 1:suite.addTest(TestToX('test_case1'))runner = unittest.TextTestRunner()runner.run(suite)time.sleep(0.8)elif num == 2:suite.addTest(TestToX('test_case2'))runner = unittest.TextTestRunner()runner.run(suite)time.sleep(0.8)elif num == 3:suite.addTest(TestToX('test_case3'))runner = unittest.TextTestRunner()runner.run(suite)time.sleep(0.8)elif num == 4:suite.addTest(TestToX('test_case4'))runner = unittest.TextTestRunner()runner.run(suite)time.sleep(0.8)else:print("輸入有誤~我們將運(yùn)行所有的用例,請(qǐng)查閱...")unittest.main()if __name__ == "__main__":main()
輸出效果
- 效果1:
== 1:字符串大小寫(xiě)轉(zhuǎn)換 ==
== 2:字符串統(tǒng)計(jì)或計(jì)數(shù) ==
== 3:字符串編碼或解碼 ==
== 4:字符串MD5加密 ==
請(qǐng)根據(jù)以上提示按要求輸入數(shù)字:1
請(qǐng)輸入要轉(zhuǎn)換的字符串:I like python, And you?
開(kāi)始進(jìn)行轉(zhuǎn)換,請(qǐng)稍等…
##################################################
您選擇的是1-字符串大小寫(xiě)轉(zhuǎn)換,轉(zhuǎn)換進(jìn)行中~~~
大寫(xiě)轉(zhuǎn)換成小寫(xiě):i like python, and you?
小寫(xiě)轉(zhuǎn)換成小寫(xiě):I LIKE PYTHON, AND YOU?
大小寫(xiě)轉(zhuǎn)換:i LIKE PYTHON, aND YOU?
首字母大寫(xiě):I Like Python, And You?
##################################################
轉(zhuǎn)換結(jié)束,歡迎使用~,工具運(yùn)行中,您也可繼續(xù)操作-----
- 效果2:
== 1:字符串大小寫(xiě)轉(zhuǎn)換 ==
== 2:字符串統(tǒng)計(jì)或計(jì)數(shù) ==
== 3:字符串編碼或解碼 ==
== 4:字符串MD5加密 ==
?
請(qǐng)根據(jù)以上提示按要求輸入數(shù)字:2
請(qǐng)輸入要轉(zhuǎn)換的字符串:i like python
開(kāi)始進(jìn)行轉(zhuǎn)換,請(qǐng)稍等…
##################################################
您選擇的是2-字符串統(tǒng)計(jì)或計(jì)數(shù),轉(zhuǎn)換進(jìn)行中~~~
請(qǐng)輸入要統(tǒng)計(jì)的字符:i
字符串統(tǒng)計(jì):2
去掉字符串左右空格:i like python
去掉字符串左邊空格:i like python
去掉字符串右邊空格:i like python
##################################################
轉(zhuǎn)換結(jié)束,歡迎使用~,工具運(yùn)行中,您也可繼續(xù)操作-----
- 效果3:
== 1:字符串大小寫(xiě)轉(zhuǎn)換 ==
== 2:字符串統(tǒng)計(jì)或計(jì)數(shù) ==
== 3:字符串編碼或解碼 ==
== 4:字符串MD5加密 ==
?
請(qǐng)根據(jù)以上提示按要求輸入數(shù)字:3
請(qǐng)輸入要轉(zhuǎn)換的字符串:我有一個(gè)億
開(kāi)始進(jìn)行轉(zhuǎn)換,請(qǐng)稍等…
##################################################
您選擇的是3-字符串編碼或解碼,轉(zhuǎn)換進(jìn)行中~~~
Unicode字符串轉(zhuǎn)換為字節(jié)序列:b’\xe6\x88\x91\xe6\x9c\x89\xe4\xb8\x80\xe4\xb8\xaa\xe4\xba\xbf’
將字節(jié)序列解碼為Unicode字符串:我有一個(gè)億
##################################################
轉(zhuǎn)換結(jié)束,歡迎使用~,工具運(yùn)行中,您也可繼續(xù)操作-----
?
- 效果4:
== 1:字符串大小寫(xiě)轉(zhuǎn)換 ==
== 2:字符串統(tǒng)計(jì)或計(jì)數(shù) ==
== 3:字符串編碼或解碼 ==
== 4:字符串MD5加密 ==
?
請(qǐng)根據(jù)以上提示按要求輸入數(shù)字:4
請(qǐng)輸入要轉(zhuǎn)換的字符串:123456
開(kāi)始進(jìn)行轉(zhuǎn)換,請(qǐng)稍等…
##################################################
您選擇的是4-字符串MD5加密,轉(zhuǎn)換進(jìn)行中~~~
字符串123456, md5直接加密后為:e10adc3949ba59abbe56e057f20f883e
##################################################
轉(zhuǎn)換結(jié)束,歡迎使用~,工具運(yùn)行中,您也可繼續(xù)操作-----
總結(jié)
本文是使用Python實(shí)現(xiàn)小工具輸出字符串大小寫(xiě)轉(zhuǎn)換、字符串統(tǒng)計(jì)、編解碼、MD5加密,簡(jiǎn)單容易理解,適合入門(mén)Python基礎(chǔ)練習(xí)??赡苄枰獙?duì)一些基礎(chǔ)知識(shí)要簡(jiǎn)單看下。建議學(xué)習(xí)的時(shí)候,不局限于上邊的示例,可以自己新增的一些示例,比如MD5加密的時(shí)候,也可以增加一些用戶名和密碼組合MD5加密、密碼使用MD5+鹽加密、MD5加鹽后將密碼整體插入鹽中、SHA1加密、SHA256加密、HMAC加密等等。