Python 实验五 高级数据结构

一、实验目的

(1)掌握序列的基本操作

(2)掌握集合、字典的基本操作

二、实验环境

联网计算机一台/每人,内装Windows 7以上操作系统和安装Python 3.7集成开发环境IDLE。

三、实验内容

Sy5-1

列表实现。编写一个函数,生成随机密码,要求: (1)密码长度不小于8位,不大于16位 (2)字符包括大小写字母和数字

Sy5-2

集合实例。删除5-1中生成的密码字符串中的重复字符,不改变原来的字符串顺序。

Sy5-3

字典实例。输入一段中英文字符串,统计每个字符出现的次数。

拓展1

数字重复统计。

(1)随机生成1000个整数

(2)数字范围[20,100]

(3)升序输出所有不同的数字及每个数字重复的次数。

拓展2

输入一段英文字符串,将其按照手机上的9键输入规则转换位相应的数字,即abc-2,def-3,ghi-4,jkl-5,mno-6,pqrs-7,tuv-8,wxyz-9

四、实验步骤与结果

1. 新建文件夹并命名为学号-姓名-实验五。

2. 安装 Python 解释器Python 3.7 集成开发环境IDLE,并进入IDLE。

3. 依次输入自己编好的程序实验内容1-7的源程序,分别命名为sy5_1.py - sy5_5.py 并保存至已建好的文件夹中。

4. 检查已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。

5. 运行程序并分析运行结果是否合理。在运行时要注意当输入不同的数据时所得结果是否正确,应测试两组以上数据,分别检查在不同情况下结果是否正确。

列出1-5题源程序清单并记录上机运行结果。

Sy5-1

列表实现。编写一个函数,生成随机密码,要求: (1)密码长度不小于8位,不大于16位 (2)字符包括大小写字母和数字

def passwordstr():import random#产生数字字符的ascii码列表numbers=list(range(48,58))          #48是字符'0'的ascii码#产生小写字符的ascii码列表letters_low=list(range(65,65+26))   #65是字符'A'的ascii码#产生大写字符的ascii码列表letters_upper=list(range(97,97+26)) #97是字符'a'的ascii码digits=random.randint(8,16)         #随机产生密码的位数print("位数:"+str(digits))s=''s1=0                                #保存随机的ascii码for i in range(1,digits+1):type=random.randint(1,4)if(type==1):s1=numbers[random.randint(0,9)]elif (type==2):s1=letters_low[random.randint(0,25)]elif (type==3):s1=letters_upper[random.randint(0,25)]#print("ascii:"+str(s1))s=s+chr(s1)print(s)passwordstr()

Sy5-2

集合实例。删除5-1中生成的密码字符串中的重复字符,不改变原来的字符串顺序。

def passwordstr():import random#产生数字字符的ascii码列表numbers=list(range(48,58))          #48是字符'0'的ascii码#产生小写字符的ascii码列表letters_low=list(range(65,65+26))   #65是字符'A'的ascii码#产生大写字符的ascii码列表letters_upper=list(range(97,97+26)) #97是字符'a'的ascii码digits=random.randint(8,16)         #随机产生密码的位数print("位数:"+str(digits))s=''s1=0                                #保存随机的ascii码for i in range(1,digits+1):type=random.randint(1,4)if(type==1):s1=numbers[random.randint(0,9)]elif (type==2):s1=letters_low[random.randint(0,25)]elif (type==3):s1=letters_upper[random.randint(0,25)]#print("ascii:"+str(s1))s=s+chr(s1)print(s)return spsStr=passwordstr()
print(psStr)
L1=list(psStr)         #转换为列表
L2=list(set(L1))       #使用集合去重之后重新生成列表
L2.sort(key=L1.index)  #按照原来字符串顺序排序
a=''.join(L2)
print(a)

Sy5-3

字典实例。输入一段中英文字符串,统计每个字符出现的次数。

dict={}
name = input()   #输入英文字符串
for letter in name:dict[letter]=dict.get(letter,0)+1for i in dict:print("{0}({1}),".format(i,dict.get(i)),end='')

五、总结

1. 实验过程中的问题及解决方法:

  • 在生成随机密码时,可能遇到随机字符生成的范围和数量控制问题。通过使用随机数生成函数结合字符范围的设定,以及循环控制密码长度,解决了密码长度和字符类型的问题。
  • 在处理集合删除重复字符时,可能对集合的特性和操作不够熟悉。通过深入理解集合的元素唯一性特点,正确运用集合的操作方法,成功去除重复字符。
  • 在统计字符出现次数时,可能在字典的更新和数据处理上出现逻辑错误。通过仔细设计字典的键值对应关系和循环逻辑,确保了统计结果的准确性。

2. 实验收获

  • 熟练掌握了列表的操作和应用,能够灵活运用列表生成满足特定条件的数据。
  • 深入理解了集合的特性和用途,学会利用集合的唯一性来处理数据。
  • 掌握了字典的数据结构和使用方法,能够有效地进行数据的统计和分析。
  • 提升了对高级数据结构的综合运用能力,能够根据不同的需求选择合适的数据结构来解决问题。
  • 增强了问题解决的能力,在遇到数据处理和逻辑实现上的困难时,能够通过调试和查阅资料找到解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 7 网络配置

如想了解请查看 虚拟机安装CentOS7 第一步:查看虚拟机网络编辑器、查看NAT设置 (子网ID,网关IP) 第二步:配置VMnet8 IP与DNS 注意事项:子网掩码与默认网关与 第一步 保持一致 第三步:网络配置…

解决一下git clone失败的问题

1).不开梯子,我们用https克隆 git clone https://github.com 报错: Failed to connect to github.com port 443 after 2091 ms: Couldnt connect to server 解决办法: 开梯子,然后# 注意修改成自己的IP和端口号 gi…

中伟视界:矿山智能化——未戴自救器检测AI算法实时检测井下作业人员自救器佩戴情况

矿山作业环境复杂且危险,确保作业人员佩戴必要的安全设备是保障安全生产的重要措施之一。自救器是井下作业人员必须佩戴的重要防护设备,用于在突发危险时保护生命安全。未戴自救器检测AI算法通过先进的图像识别和人工智能技术,实时监控井下人…

STM32第二十一课:FreeRTOS事件组软件定时器

目录 一、事件组1.事件组创建2.事件组置位3.事件组等待 二、软件定时器1.软件定时器创建2.软件定时器执行3.例程代码 一、事件组 本质上是任务同步,但比二值信号量优秀的是可以一对多。 我的理解:事件组就是标志位的集合,将多个标志位放到一个…

昇思25天学习打卡营第23天|DCGAN生成漫画头像

今天是参加昇思25天学习打卡营的第23天,今天打卡的课程是“DCGAN生成漫画头像”,这里做一个简单的分享。 1.简介 DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Adversarial Networks)是GAN的直接扩展。…

ArkUI状态管理

State装饰器 在声明式UI中,是以状态驱动试图更新 状态 (State) 指驱动视图更新的数据(被装饰器标记的变量) 试图(View) 基于UI描述渲染得到用户界面 说明 1.State装饰器标记的变量必须初始化,不能为空 2.State支持Object、classstring、number、b…

kettle从入门到精通 第七十六课 ETL之kettle kettle连接hive教程

1、群里有小伙伴询问kettle连接hive的demo,今天抽点时间整理下。其实kettle连接hive和连接mysql数据库也是一样的。 1)kettle中的lib目录下放hive驱动jar,这里我使用的是kyuubi-hive-jdbc-shaded-1.9.0.jar。 2)设置hive连接参数…

Ubuntu部署K8S集群-图文并茂(超详细)

Ubuntu部署K8S集群 1. 模版机系统环境准备1.1 安装Ubuntu1.2 设置静态IP地址 2. 主机准备2.1 使用模板机创建主机2.2 主机配置2.2.1 修改静态IP2.2.2 修改主机名2.2.3 主机名-IP地址解析2.2.4 时间同步2.2.5 内核转发、网桥过滤配置2.2.6 安装ipset和ipvsadm2.2.7 关闭SWAP分区…

pnpm install安装失败

ERR_PNPM_META_FETCH_FAIL GET https://registry.npmjs.org/commitlint%2Fcli: request to https://registry.npmjs.org/commitlint%2Fcli failed, reason: connect ETIMEDOUT 2606:4700::6810:123:443 1. 检查网络连接 确保你的网络连接正常并且没有被防火墙或代理服务器阻止…

【docker 部署springboot项目】

一、docker安装 1.检查Linux内核版本高于3.10才可安装 uname -r 2. 卸载旧版本 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 3. 使用docker仓库进行安装 安装所需的软…

java代理模式之JDK动态代理

目录 什么是动态代理? 动态代理的两种方式? jdk动态代理; cglib静态代理 为什么需要代理? 1、原有功能增强 2、降低耦合 JDK动态代理代码实例: 实体类: 持久层接口实现类(使用jdbc进行…

【2024】VsCode + Latex + Linux(Ubuntu) + wsl环境下配置教程 | 包含 中文配置,和 格式化处理

前言 本篇教程是针对WSL下的Ubuntu操作系统的配置教程,它和一般的Linux环境下的配置有所不同,并且和Windows环境下的也有所不同。 本篇博客编写参考了 官方文档(Tex) 和 插件官方(Texlive Workshop) 文档…

动手学RAG:Part1 什么是RAG?

1、大模型的幻觉问题、时效性问题、数据安全问题 2、大模型的结构和参数数量导致对其修改、微调和重新训练变得很困难 3、基于知识的问答,依赖于信息抽取

Logback日志异步打印接入指南,输出自定义业务数据

背景 随着应用的请求量上升,日志输出量也会成线性比例的上升,给磁盘IO带来压力与性能瓶颈。应用也遇到了线程池满,是因为大量线程卡在输出日志。为了缓解日志同步打印,会采取异步打印日志。这样会引起日志中的追踪id丢失&#xf…

2024 HNCTF PWN(close ezpwn idea what beauty)

文章目录 closeezpwn代码利用exp idea代码exp whatexp beauty libc 2.35IDA中文乱码解决代码思路exp close int __fastcall main(int argc, const char **argv, const char **envp) {puts("**********************************");puts("* Welcome to the H…

kubernetes k8s Deployment 控制器配置管理 k8s 红蓝部署 金丝雀发布

目录 1、Deployment控制器:概念、原理解读 1.1 Deployment概述 1.2 Deployment工作原理:如何管理rs和Pod? 2、Deployment资源清单文件编写技巧 3、Deployment使用案例:创建一个web站点 4、Deployment管理pod:扩…

数字化装备场革新:智能装备采集设备问世!

数字化装备场建设是一项跨学科的综合工程,它不仅涵盖了网络布线的整合、系统框架的构建,还包含了各类硬件设备的配置等丰富多样的内容。该工程的关键环节主要包括对装备场所的出入口进行现代化升级、完善车库车辆定位与管理体系,以及部署一体…

Maven学习——Maven的下载、安装与配置(详细攻略!)

目录 前言 1.下载与安装 2.配置Maven的环境变量 3.配置Maven的本地仓库 4. 配置Maven的镜像远程仓库 前言 我在之前写了一篇博客,是介绍Maven的基本概念和下载安装,但是由于篇幅过长,Maven的下载与安装写的并不详细🐶&#x…

kaggle 量化交易 比赛

作者: Raoul Malm 描述: 本笔记本演示了如何使用 TensorFlow 中的循环神经网络预测不同股票的未来价格。实现了带有基本单元、LSTM 或 GRU 单元的循环神经网络。 大纲: [库和设置][分析数据][操作数据][建模和验证数据][预测]参考: https://www.kaggle.com/benjibb/lstm-st…

图片压缩python

linux粘贴文本格式错乱: vi/vim :set paste然后再 insert ,粘贴 centos安装pillow图像处理库: 引用:https://blog.csdn.net/newbieLCQ/article/details/125345335 linux赋予执行权限: # 创建文件 touch comperss.p…