- 本文主要是使用 Python 做一些简单小工具,打印输出即可;
- 本文涉及到的小工具有字符串大小写转换、字符串统计、编解码、MD5 加密等等;
- 文章内容通俗易懂,适合刚入门 Python 练习基础知识;
- 文章中使用到了 Python 的标准输入输出、字符串基本操作、unittest 框架基本使用、方法和类的使用等;
- 写作思路是先大概介绍每个小工具的实现思路,然后写一点部分代码,最后会把所有小工具整合在一起运行。
字符串大小写转换
实现思路
- 根据用户键盘输入的字符串来按照要求进行大小写转换;
- 主要有大写转换成小写、小写转换成小写、大小写转换、首字母大写。
部分代码
- 详细的代码后续会整合在一起,这里看下部分代码:
print('您选择的是 1-字符串大小写转换,转换进行中~~~') print(f"大写转换成小写:{self.s.lower()}") print(f"小写转换成小写:{self.s.upper()}") print(f"大小写转换:{self.s.swapcase()}") print(f"首字母大写:{self.s.title()}")
字符串统计
实现思路
- 根据输入的字符串,先判断一个字符是不是在该字符串中;
- 然后判断该字符在字符串中出现的次数;
- 去掉字符串左右空格;
- 去掉字符串左边空格;
- 去掉字符串右边空格。
部分代码:
def test_case2(self): print('您选择的是 2-字符串统计或计数,转换进行中~~~') i = input('请输入要统计的字符:') if i in self.s: print(f"字符串统计:{self.s.count(i)}") print(f"去掉字符串左右空格:{self.s.strip()}") print(f"去掉字符串左边空格:{self.s.lstrip()}") print(f"去掉字符串右边空格:{self.s.rstrip()}") else: print(f"您输入的字符:{i} 没有在字符串{self.s}中")
字符串编解码
实现思路
- 根据输入字符串,将 Unicode 字符串转换为字节序列;
- 将字节序列解码为 Unicode 字符串。
部分代码
def test_case3(self): print('您选择的是 3-字符串编码或解码,转换进行中~~~') str_byte = self.s.encode('utf-8') print(f"Unicode 字符串转换为字节序列:{str_byte}") print(f"将字节序列解码为 Unicode 字符串:{str_byte.decode('utf-8')}")
字符串 MD5 加密
实现思路
- 根据输入的字符串进行简单的 MD5 加密。
部分代码
def test_case4(self): print('您选择的是 4-字符串 MD5 加密,转换进行中~~~') md = hashlib.md5(self.s.encode()) md5_pass = md.hexdigest() print(f"字符串{self.s}, md5 直接加密后为:{md5_pass}")
小工具整体设计
设计思路
- 先创建一个类,这个类继承于 unittest 框架的 TestCase,目的是组织所有的用例;
- 每个用例必须按照 unittest 框架的规则去写,比如函数开头必须为 test 等;
- 每个用例其实就是一个小工具,这个用例中主要实现对应的小工具内容;
- unittest 框架的前置 setUpClass 处理小工具的开始信息,比如提示信息或者要输入的字符串;
- unittest 框架的后置 tearDownClass 处理小工具的结束信息,比如结束语等等;
- 除了类中的方法外,还定义了一个主函数 main() 用来组织所有的用例执行;
- 主函数 main() 中的用例执行逻辑按照 unittest 框架的 suite、testcase、addTest、TextTestRunner 方式去组织。
- 最后就是调用 main() 函数即可。
工具完整代码实现
import unittest
import time
import hashlib
class TestToX(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
# cls.s = 'I like python, And you?'
cls.s = input('请输入要转换的字符串:')
print("开始进行转换,请稍等......")
print("#" * 50)
@classmethod
def tearDownClass(cls) -> None:
print("#" * 50)
print("转换结束,欢迎使用~,工具运行中,您也可继续操作-----")
def test_case1(self):
print('您选择的是1-字符串大小写转换,转换进行中~~~')
print(f"大写转换成小写:{self.s.lower()}")
print(f"小写转换成小写:{self.s.upper()}")
print(f"大小写转换:{self.s.swapcase()}")
print(f"首字母大写:{self.s.title()}")
def test_case2(self):
print('您选择的是2-字符串统计或计数,转换进行中~~~')
i = input('请输入要统计的字符:')
if i in self.s:
print(f"字符串统计:{self.s.count(i)}")
print(f"去掉字符串左右空格:{self.s.strip()}")
print(f"去掉字符串左边空格:{self.s.lstrip()}")
print(f"去掉字符串右边空格:{self.s.rstrip()}")
else:
print(f"您输入的字符:{i} 没有在字符串{self.s}中")
def test_case3(self):
print('您选择的是3-字符串编码或解码,转换进行中~~~')
str_byte = self.s.encode('utf-8')
print(f"Unicode字符串转换为字节序列:{str_byte}")
print(f"将字节序列解码为Unicode字符串:{str_byte.decode('utf-8')}")
def test_case4(self):
print('您选择的是4-字符串MD5加密,转换进行中~~~')
md = hashlib.md5(self.s.encode())
md5_pass = md.hexdigest()
print(f"字符串{self.s}, md5直接加密后为:{md5_pass}")
def main():
while True:
print('== 1:字符串大小写转换 == \n'
'== 2:字符串统计或计数 == \n'
'== 3:字符串编码或解码 == \n'
'== 4:字符串MD5加密 == \n')
num = int(input('请根据以上提示按要求输入数字:'))
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("输入有误~我们将运行所有的用例,请查阅...")
unittest.main()
if __name__ == "__main__":
main()
输出效果
- 效果 1:
== 1:字符串大小写转换 == == 2:字符串统计或计数 == == 3:字符串编码或解码 == == 4:字符串 MD5 加密 == 请根据以上提示按要求输入数字:1 请输入要转换的字符串:I like python, And you? 开始进行转换,请稍等...... ################################################## 您选择的是 1-字符串大小写转换,转换进行中~~~ 大写转换成小写:i like python, and you? 小写转换成小写:I LIKE PYTHON, AND YOU? 大小写转换:i LIKE PYTHON, aND YOU? 首字母大写:I Like Python, And You? ################################################## 转换结束,欢迎使用~,工具运行中,您也可继续操作-----
- 效果 2:
== 1:字符串大小写转换 == == 2:字符串统计或计数 == == 3:字符串编码或解码 == == 4:字符串 MD5 加密 == 请根据以上提示按要求输入数字:2 请输入要转换的字符串:i like python 开始进行转换,请稍等...... ################################################## 您选择的是 2-字符串统计或计数,转换进行中~~~ 请输入要统计的字符:i 字符串统计:2 去掉字符串左右空格:i like python 去掉字符串左边空格:i like python 去掉字符串右边空格:i like python ################################################## 转换结束,欢迎使用~,工具运行中,您也可继续操作-----
- 效果 3:
== 1:字符串大小写转换 == == 2:字符串统计或计数 == == 3:字符串编码或解码 == == 4:字符串 MD5 加密 == 请根据以上提示按要求输入数字:3 请输入要转换的字符串:我有一个亿 开始进行转换,请稍等...... ################################################## 您选择的是 3-字符串编码或解码,转换进行中~~~ Unicode 字符串转换为字节序列:b'\xe6\x88\x91\xe6\x9c\x89\xe4\xb8\x80\xe4\xb8\xaa\xe4\xba\xbf' 将字节序列解码为 Unicode 字符串:我有一个亿 ################################################## 转换结束,欢迎使用~,工具运行中,您也可继续操作-----
- 效果 4:
== 1:字符串大小写转换 == == 2:字符串统计或计数 == == 3:字符串编码或解码 == == 4:字符串 MD5 加密 == 请根据以上提示按要求输入数字:4 请输入要转换的字符串:123456 开始进行转换,请稍等...... ################################################## 您选择的是 4-字符串 MD5 加密,转换进行中~~~ 字符串 123456, md5 直接加密后为:e10adc3949ba59abbe56e057f20f883e ################################################## 转换结束,欢迎使用~,工具运行中,您也可继续操作-----
总结
本文是使用 Python 实现小工具输出字符串大小写转换、字符串统计、编解码、MD5 加密,简单容易理解,适合入门 Python 基础练习。可能需要对一些基础知识要简单看下。建议学习的时候,不局限于上边的示例,可以自己新增的一些示例,比如 MD5 加密的时候,也可以增加一些用户名和密码组合 MD5 加密、密码使用 MD5+ 盐加密、MD5 加盐后将密码整体插入盐中、SHA1 加密、SHA256 加密、HMAC 加密等等。
更多内容可以学习《测试工程师 Python 工具开发实战》书籍、《大话性能测试 JMeter 实战》书籍