字符串加密-第11届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第29讲。

字符串加密,本题是2020年6月20日举办的第11届蓝桥杯青少组Python编程省赛编程第4题,题目要求编程实现加密功能,将输入的一段明文,按照给定的加密策略,输出对应密文。

先来看看题目的要求吧。

一.题目说明

时间限制:4000Ms

内存限制:589824K3

题目描述

在生活中,为保证信息安全,我们会把重要的信息进行加密后再发送绘对方,对方需要通过相同的策整对信息进行解密,才能了解到传递的信息,我们一把加密前的信息称为明文,把加密后的倌息称为密文。

有这样一种加密的策略:第一次加密策略是将明文中字母a加密为01,b加密为02,c加密为03,以此类推,x加密为24,y加密为25,z加密为26,空格不加密;然后在第一次加密的基础上进行二次加密,第二次加密策略是将数字0加密为27,数字1加密为28,以此类推,数字8加密为35,数字9加密为36,空格则加密为00。

编程实现:

请输入一段明文,按照上述加密策略,输出对应密文。

输入描述:

输入一段明文(只包含小写字母和空格)

输出描述:

按照上述加密策略,输出对应密文。

样例输入:

ab c

样例输出:

27282729002730

评分标准:

  • 20分:能正确输出一组数据;

  • 20分:能正确输出两组数据;

  • 20分:能正确输出三组数据;

  • 20分:能正确输出四组数据。

二.思路分析

这是一道字符处理题,考查的知识点主要包括循环、条件、函数和字符相关知识。

根据题目的描述,我们可以将两次加密过程分开讨论:

  • 一次加密

  • 二次加密

1.一次加密

第一次加密,是将小写字母转成数字串,对应关系如下:

图片

每个字母都对应一个数字串,这是典型的键值对,可以使用字典来表示,如下:

{"a":"01", "b":"2", ..., "y": "25", "z":"26" }

使用字典比较简单,但是写起来比较麻烦。

实际上,我们可以使用ASCII码来简化代码,ASCII码对应关系如下:

图片

加密时,先找到该字母对应的ASCII码,再减去a的ASCII码,再加上1。

比如b的ASCII码是98,先减去97(a的ASCII码),再加上1,结果为2。又如z的ASCII码是122,先减去97(a的ASCII码),再加上1,结果为26。

Python编程提供了一个ord()函数用于获取字符的ASCII码,如下:

# 返回字符的ASCII码ord(c)

返回的数字1~9只有一位的数字,需要在前面补上0,Python提供了一个非常好用的补全函数,如下:

str.zfill(width)

将width设置为2,就可以确保一位数字前面补0了。

为了方便,我们可以定义一个函数,对给定的字符进行一次加密,返回其数字串。

2. 二次加密

第二次加密是将每一位数字串转成两位数字,相对要简单一些。只需要将该数字串转成整型,然后加上27,再转成字符串就行了。

为了方便,我们也将其定义成一个函数,对给定数字进行二次加密,返回加密后的数字串。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们分3步来编写程序:

  • 定义函数进行一次加密;

  • 定义函数进行二次加密;

  • 输出字符串加密结果;

1. 定义函数进行一次加密

根据前面的思路分析,定义函数如下:

图片

传入一个字母,就返回加密后的数字串,如果是空字符串,则直接返回,强调两点:

1). 对于空字符串的判断,最简单的就是直接使用 c == " ",引号里面要打一个空格; 

2). 对ASCII码进行算术运算后的结果是整数类型,需要转成字符串,才能调用zfill()方法。

2. 定义函数进行二次加密

根据前面的思路分析,定义函数如下:

图片

传入一个数字串,就返回加密的数字串,如果是空字符串,则返回"00"。需要注意,要将结果转成成字符串类型,以保持统一。

3. 输出字符串加密结果

有了上面的两个加密函数,接下来就非常简单了,分两次对输入的字符串进行加密处理即可,代码如下;

图片

代码比较简单,需要注意,需要将这两次加密分开处理,因为第一次加密后,每个字符变成两个字符,第二次加密是对每个数字进行单独加密处理,所以是无法直接叠加处理的。

测试程序,输入ab c,结果如下:

图片

输入yz jqx ,效果如下:

图片

至此,整个程序就全部完成了,你也可以输入不同的字符串来测试效果。

四.总结与思考

本题的分数为80分,代码在20行左右,涉及到的知识点包括:

  • 循环语句,主要for...in循环;

  • 条件语句,主要是双分支;

  • 函数的定义及使用;

  • ASCII码的转换;

  • 类型转换;

  • 字符相关函数;

题目难度一般,关键点是第一次加密过程,即如何将小写字母转成两位数字串。这就要求考生对ASCII码的转换比较熟悉,ASCII码是我们学习编程的基础,必须要熟练掌握。

当然,如果实在记不住ASCII码及转换的函数,也可以退而求其次,使用构建字典的方法来解决,只是代码稍微麻烦一点。

超平老师建议,在日常学习编程的过程中,对于某个问题,尽量使用两种以上的方法来实现,这样既可以巩固所学知识,又可以开阔自己的思路,长期坚持下来,你肯定会有意想不到的收获。

超平老师给你留一道思考题,将ASCII码转成对应字符的函数是哪一个,如何使用?

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言字符类型详解

1. 字符型变量概述 在C语言中,使用 char 关键字来表示字符型变量,它用于存储一个单一字符。 字符型变量的赋值需要使用一对英文半角格式的单引号()把字符括起来。 每个字符变量在16位、32位或64位编译器中都是占用1个字节(8位)…

【一】达梦数据库安装和使用-Windows

达梦数据库安装和使用-Windows 简介: 新能源行业关系到国计民生,保障能源安全的意识不容懈怠,近些年各行各业都在推进数字化进程,能源行业在国家3060双碳目标提出之后更是进行的如火如荼,能源互联网方面在数字化的同时…

Spark集群搭建

Spark集群结构 图 名词解释 Driver 该进程调用 Spark 程序的 main 方法,并且启动 SparkContextCluster Manager 该进程负责和外部集群工具打交道,申请或释放集群资源Worker 该进程是一个守护进程,负责启动和管理 ExecutorExecutor 该进程是一…

「Verilog学习笔记」任意奇数倍时钟分频

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule clk_divider#(parameter dividor 5) ( input clk_in,input rst_n,output clk_out );parameter CNT_WIDTH $clog2(dividor - 1) ; reg flag1, f…

XDOJ167.数字统计排序

标题 数字统计排序 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出,次数相同时先输出值较小的数。 输入说明 输入的第一行包含一个整数…

转载:Windows实用小工具

原文作者我忘了是谁了&#xff0c;如有侵权联系我。 开始的时候要输入用户名和密码&#xff0c;都是“123456”。 源代码&#xff1a; #include <iostream> #include <windows.h> #include <cstring> #include <cstdio> #include <cmath> usi…

西门子PLC联网数据采集:借助HiWoo Box实现高效监控与管理

在工业自动化领域&#xff0c;西门子PLC作为一种广泛应用的控制器&#xff0c;对于工厂的生产线具有至关重要的作用。如何实现西门子PLC的联网数据采集&#xff0c;提高生产效率和管理水平&#xff0c;成为了许多企业的关注焦点。而HiWoo Box作为一款功能强大的工业网关&#x…

Docker安装Centos8系统

引言&#xff1a;最小安装版Centos8系统安装docker软件安装记录 官网安装教程&#xff1a;https://dockerdocs.cn/engine/install/centos/index.html 操作系统镜像版本 CentOS-Stream-8-x86_64-latest-boot.iso 第一步&#xff1a;更新yum yum -y update第二步&#xff1a;…

基于PHP的花店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的花店管理系统 一 介绍 此花店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 …

具备闭环思维的测试才更充分

测试工作的终极目标是为了保障产品的质量。如果用同一个维度衡量测试人员的业务水平&#xff0c;简单粗暴一些&#xff1a;那就是针对同一款产品&#xff0c;哪个测试人员发现的bug多&#xff0c;哪个测试人员的测试理论与实践水平相对来说还是高一些。 前两天组长在群里分析了…

13-注意力机制

文章目录 什么是注意力机制注意力机制的实现方式1、SENet的实现---通道注意力 CA(Channel Attention)2、CBAM的实现通道-空间注意力 CA-SA(channel attention, spacial attention)残差-通道-空间注意力(ResBlock + CBAM)残差-通道注意力 RCAB残差-空间注意力 RSAB3、ECANet什…

LeetCode做题总结 15. 三数之和、18. 四数之和 (Java)

不会做&#xff0c;参考了代码随想录和力扣官方题解&#xff0c;对此题进行整理。 X数之和 15. 三数之和代码思路20240103重写错误1错误2Java语言点总结 18. 四数之和代码思路20240104&#xff08;伪&#xff09;错误1 第一次剪枝错误2 第二次剪枝错误3 溢出 15. 三数之和 代码…

滑动窗口最大值【子串】【滑动窗口】【双端队列】

Problem: 239. 滑动窗口最大值 文章目录 思路 & 解题方法复杂度Code 思路 & 解题方法 实在是太太太太巧妙了&#xff01;定义一个双端队列&#xff0c;然后存储下标&#xff0c;存储进去每一个数的下标时&#xff0c;都需要将现在有的数且小于当前的数字都去掉&#xf…

静态网页设计——贵州美食(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1vC4y1K7de/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…

golang 的那些花样

从 A Tour of Go 可以看到一些 Go 比较特殊的点 文章目录 变量声明时&#xff0c;类型放在后面Array 的引用 Slicereceiver 和 argumentbuilt-int特殊接口Error 变量声明时&#xff0c;类型放在后面 var i, j int 1, 2declaration-syntax Array 的引用 Slice slices-intro …

【FPGA/verilog -入门学习15】vivado FPGA 数码管显示

1&#xff0c;需求&#xff1a;使用xc720 开发板的8个数码管显示12345678 2&#xff0c;需求分析&#xff1a; 75hc595 1&#xff0c;74hc595驱动&#xff0c;将串行数据转换成并行输出。对应研究手册 2&#xff0c;发送之前将要发的数据&#xff0c;合并成高8位:SEG,低8位&…

Spring配置提示: File is included in 4 contexts

问题描述&#xff1a; spring配置文件上面提示&#xff1a; mvc application context in module studyDemo file is included in 4 contexts 导致原因&#xff1a;因为所有的配置文件都没有放在同一个上下文中 所谓File is included in 4 contexts是因为spring的配置文件放…

前端实现回车键触发搜索

前端实现回车键触发搜索 前言实现方法1. html里可以用 form 来实现2. 非form中的input 前言 搜索框是个常见的功能&#xff0c;除了用现有的ui组件库&#xff0c;有的时候必须要自己封装&#xff0c;所以涉及到点击按钮搜索和回车搜索都要实现 实现方法 1. html里可以用 for…

【100条sqlite3常用命令】

.open filename - 打开或创建一个SQLite数据库文件.tables - 列出当前数据库中的表.schema tablename - 查看指定表的创建语句.header on|off - 设置是否显示查询结果的列名.mode csv|column|json - 设置查询结果的显示模式.import filename tablename - 从文件导入数据到指定表…

通过IP地址防范钓鱼网站诈骗的有效措施

随着互联网的普及&#xff0c;钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站&#xff0c;攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗&#xff0c;提供一系列有效的措施&#xff0c;以加强网络安全&#xff0c;保护用户免受诈骗…