小工具实战-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…...
Diff Checker:3个你没想到的文本对比高效技巧
Diff Checker:3个你没想到的文本对比高效技巧 【免费下载链接】diff-checker Desktop application to compare text differences between two files (Windows, Mac, Linux) 项目地址: https://gitcode.com/gh_mirrors/di/diff-checker 你是否曾经为了找出两份…...
数据摄取构建模块简介(预览版)(一)刺
一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...
特征工程路线图:未来自动化特征学习的发展趋势
特征工程路线图:未来自动化特征学习的发展趋势 【免费下载链接】fe4ml-zh :book: [译] 面向机器学习的特征工程 项目地址: https://gitcode.com/gh_mirrors/fe/fe4ml-zh 特征工程作为机器学习流水线的核心环节,是连接原始数据与模型性能的关键桥梁…...
在PlatformIO+VSCode环境下为STM32L476与ST7789屏幕构建LVGL内存优化实战指南
1. 环境搭建与基础配置 在开始LVGL内存优化之前,我们需要先搭建好开发环境。PlatformIOVSCode的组合为嵌入式开发提供了极大的便利,特别是对于STM32这类MCU的开发。我最初接触这个组合时,就被它的高效所吸引,相比传统的Keil或IAR&…...
网络运维实战:无线网络信号弱的排查、定位与增强方案
网络运维实战:无线网络信号弱的排查、定位与增强方案前言一、无线网络信号弱:典型表现二、信号弱排查总体思路(标准流程图)三、WiFi信号弱:标准排查步骤(9步逐点解决)3.1 第一步:确认…...
毕业之家20+核心功能盘点:选题、大纲、初稿、降重、查重、排版、答辩全包了
在论文写作过程中,不知如何下笔、结构混乱、查重焦虑、格式繁琐是困扰大多数毕业生的主要问题。毕业之家(biye.com)正是针对这些痛点打造的一站式AI论文写作平台,覆盖从选题到答辩的全流程-6-8。 一、核心定位:专为毕…...
实战分享:如何用YOLOv5+SpringBoot打造化工安全火苗检测系统(附完整代码)
工业级AI实战:YOLOv5与SpringBoot构建智能火情预警系统 化工行业对安全生产的严苛要求,使得传统人工监控方式面临巨大挑战。我们团队在多个工业场景中验证了一套基于YOLOv5与SpringBoot的智能火情检测方案,其核心在于将前沿目标检测技术与企业…...
Notepad--:Mac用户的跨平台文本编辑器终极指南
Notepad--:Mac用户的跨平台文本编辑器终极指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 还在为macOS…...
彻底告别Windows Defender烦恼:开源控制工具让你的电脑真正属于你
彻底告别Windows Defender烦恼:开源控制工具让你的电脑真正属于你 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-con…...
常见问题划重点|Google Play Games Level Up 计划
Google Play Games Level Up 计划旨在发掘并奖励玩家体验出色的游戏,提供各种强大的工具和推广资源来助力您的游戏业务蓬勃发展。我们将为您推出有关 Level Up 计划的系列精彩内容,欢迎您关注 #Level Up 计划内容合集。Google Play 始终致力于挖掘那些能…...
