小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
- 学习建议
- 字符串大小写转换
- 实现思路
- 部分代码
- 字符串统计
- 实现思路
- 部分代码:
- 字符串编解码
- 实现思路
- 部分代码
- 字符串MD5加密
- 实现思路
- 部分代码
- 小工具整体设计
- 设计思路
- 工具完整代码实现
- 输出效果
- 总结
学习建议
- 本文主要是使用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 hashlibclass TestToX(unittest.TestCase):@classmethoddef setUpClass(cls) -> None:# cls.s = 'I like python, And you?'cls.s = input('请输入要转换的字符串:')print("开始进行转换,请稍等......")print("#" * 50)@classmethoddef 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实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密 学习建议字符串大小写转换实现思路部分代码 字符串统计实现思路部分代码: 字符串编解码实现思路部分代码 字符串MD5加密实现思路部分代码 小工具整体设计设计思路工具完整代码实现输…...
MySQL进阶-----索引的语法与SQL性能分析
目录 前言 一、索引语法 1.SQL语法 2.案例演示 二、SQL性能分析 三、慢查询日志 1.开启日志 2.测试样例 四、profile详情 1.开启profile 2.profile测试SQL语句 五、explain详情 1.语法结构 2.执行顺序示例(id) 3.执行性能示例(type) 前言 本…...
Ansible剧本playbooks详解
一、playbook简介 playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,playbook字面意思是剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装&#x…...
vue3封装Element导航菜单
1. 导航外层布局 AsideView.vue <template><el-menu:default-active"defaultActive"class"my-menu":collapse"isCollapse":collapse-transition"false"open"handleOpen"close"handleClose"><menu…...
字符串的函数
头文件 # include <string.h> 五大函数: strlen()、strcpy、strcat()、strcmp()、strstr() 用法: strlen():计算字符串长度,但不计\0这个字符 #include <string.h> int main() {char arr[] "abcdef"…...
Linux安装redis(基于CentOS系统,Ubuntu也可参考)
前言:本文内容为实操记录,仅供参考! 一、下载并解压Redis 1、执行下面的命令下载redis:wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis:tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…...
ChatGPT引领量化交易革命:AI在金融创新的浪潮中崭露头角
随着科技的飞速发展,金融领域正迎来一场前所未有的创新浪潮。在这场变革中,ChatGPT凭借其卓越的自然语言处理能力和深度学习能力,正引领量化交易进入新时代。 量化交易,作为现代金融领域的一种重要交易方式,依赖于复杂的数学模型和大量的历史数据来制定交易策略。然而,传…...
无忧微服务:如何实现大流量下新版本的发布自由
作者:项良、十眠 微服务上云门槛降低,用好微服务才是关键 据调研数据显示,约 70% 的生产故障是由变更引起的。在阿里云上的企业应用如茶百道、极氪汽车和来电等,他们是如何解决变更引起的稳定性风险,实现了在白天高流…...
Halcon3D表面平面度检测-平面差值法
//倾斜平面矫正 https://blog.csdn.net/m0_51559565/article/details/137146179 //平面度和平面缺陷检测,平面矫正法 https://blog.csdn.net/m0_51559565/article/details/137163729前言 通常我们对表面平面度进行检测时,通常使用2种方式。1:…...
golang 在多线程中避免 CPU 指令重排
发布日期:2024-03-26 16:29:39 起因 golang 的发明初衷便是多线程,是一门专门用于多线程高并发的编程语言。其独创的 GMP 模型在多线程的开发上提供了很大的便利。 现代计算机基本上都是多核 CPU 的结构。CPU 在进行指令运行的时候,为了提高…...
自动化更新包文件--shell脚本
自动化更新包文件--shell脚本 背景手动更包自动化更包 背景 作为一名实施工程师,当然也协助做些测试的工作,当产品功能开发后,研发会将本次迭代涉及的前后端包文件提供过来。有时会因为一些原因研发没法现场开发,那就需要我们配合…...
Vue element-plus 导航栏 [el-menu]
导航栏 [el-menu] Menu 菜单 | Element Plus el-menu有很多属性和子标签,为网站提供导航功能的菜单。 常用标签: 它里面有两个子标签。el-menu-item,它其实就是el-menu每一个里面的item,item就是真实匹配到路由的每个栏目&#…...
数据结构——数组
数组定义: 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识。 因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来。 性…...
python asyncio websockets server
python websocket server在收到接受消息处理完后会默认关闭连接。需要在msg_handler里面加个while true就能一直保持连接了。 start_server websockets.serve(msg_handler, "0.0.0.0", 29967) asyncio.get_event_loop().run_until_complete(start_server) asyncio.…...
视频素材免费网站有哪些?8个视频素材库网站下载推荐
在视频创作领域,选择正确的高质量无水印素材网站能够极大地丰富您的作品,让每一帧都鲜活起来。下面,我们继续为您介绍更多优质的视频素材网站,每一个都是您创作旅程中的宝贵资源。 1. 蛙学府(中国) 集合了…...
ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异
引言 随着互联网的快速发展,信息的获取变得比以往任何时候都更加便捷。在数字化时代,人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息,然而,这种机械式的检索方式有时候并不…...
xargs后调用bash自定义函数(写该函数文本到脚本, 并引导PATH)
xargs后调用bash自定义函数 需要3步骤,如下 function to_markdown_href_func() { fp$1 #echo $fpecho -e "\n[${fp}](${PREFIX}/${fp})" }BIN/tmp/bin/ F$BIN/to_markdown_href_func.sh mkdir -p $BIN 获得函数to_markdown_href_func的文本 ,写文本到 /tmp/bin/to_ma…...
学术论文写作新利器:ChatGPT技巧详解
ChatGPT无限次数:点击直达 学术论文写作新利器:ChatGPT技巧详解 在如今信息爆炸的时代,学术论文写作变得愈发重要且具有挑战性。随着人工智能技术的不断发展,ChatGPT作为一种强大的写作辅助工具,为学术论文创作者提供了全新的可能…...
Spring整合JDBC
1、引入依赖 <properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><depen…...
详解Qt中的布局管理器
Qt中的布局管理是用于组织用户界面中控件(如按钮、文本框、标签等)位置和尺寸调整的一种机制。说白了就是创建了一种规则,随着窗口变化其中的控件大小位置跟着变化。Qt提供了多种布局管理器,每种都有其特定用途和特点。以下是对Qt…...
避开这些坑!高德DragRoute插件获取路线坐标的5个常见问题解决方案
高德地图DragRoute插件实战:路线坐标获取的深度避坑指南 当开发者需要在地图上绘制复杂路线时,高德地图的DragRoute插件无疑是个强大工具。但在实际项目中,从简单的A到B路径绘制,到包含多个途经点的复杂路线坐标获取,开…...
Python实战:用LangGraph和MCP打造你的第一个AI代理(附完整代码)
Python实战:用LangGraph和MCP构建智能代理的完整指南 在当今快速发展的AI领域,构建能够理解和执行复杂任务的智能代理已成为开发者关注的焦点。本文将带您深入了解如何利用LangGraph框架和模型上下文协议(MCP)构建一个功能完备的AI代理,从基础…...
OpCore Simplify:零基础黑苹果配置的终极自动化解决方案
OpCore Simplify:零基础黑苹果配置的终极自动化解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而烦…...
AI原生应用的微服务架构设计模式
AI原生应用的微服务架构设计模式:用智能餐厅的故事讲透AI与微服务的碰撞关键词:AI原生应用、微服务架构、设计模式、模型生命周期、实时数据流摘要:当AI大模型、边缘计算和实时决策需求爆发时,传统单体架构已无法满足AI应用的动态…...
158.基于matlab的用于分析弧齿锥齿轮啮合轨迹的输出齿轮啮合轨迹及传递误差程序已调通
158.基于matlab的用于分析弧齿锥齿轮啮合轨迹的输出齿轮啮合轨迹及传递误差程序已调通,可直接运行1. 引言:TCA技术的重要性与挑战 弧齿锥齿轮作为机械传动系统的核心部件,其啮合质量直接影响整个传动装置的可靠性、效率和使用寿命。齿面接触分…...
OpenClaw语音交互方案:Qwen3-32B镜像对接Whisper实时转写
OpenClaw语音交互方案:Qwen3-32B镜像对接Whisper实时转写 1. 为什么需要语音交互方案 作为一个长期与命令行打交道的开发者,我始终在寻找更自然的交互方式。键盘输入固然高效,但在某些场景下——比如双手被占用时调试代码、厨房里边做饭边查…...
深度技术解析:IDM激活脚本(IAS)的注册表锁定机制与长期试用方案
深度技术解析:IDM激活脚本(IAS)的注册表锁定机制与长期试用方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Dow…...
SEO_2024年最新SEO趋势分析与实战策略解读
<h1 id"2024seo">2024年最新SEO趋势分析与实战策略解读</h1> <p>在数字营销的快速发展中,搜索引擎优化(SEO)作为提升网站流量的重要手段,一直备受关注。2024年,SEO领域再度发生了一些重要…...
FastAPI 2.0流式响应源码深度拆解,从Starlette 1.12到Pydantic v2.6兼容层的5处隐式await丢失点(生产环境已验证)
第一章:FastAPI 2.0流式响应架构演进与问题定位全景FastAPI 2.0 对流式响应(StreamingResponse)进行了底层重构,核心变化在于将 ASGI 生命周期与异步生成器的生命周期解耦,并引入更严格的流控契约。此前版本中常见的内…...
Hunyuan-HY-MT1.8B性能报告解读:380ms处理500token实测
Hunyuan-HY-MT1.8B性能报告解读:380ms处理500token实测 1. 测试背景与模型简介 腾讯混元团队最新发布的HY-MT1.5-1.8B翻译模型,以其轻量级架构和卓越性能引起了广泛关注。这个仅有18亿参数的模型,在保持高质量翻译效果的同时,实…...
