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://www.mzph.cn/bicheng/47083.shtml

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

相关文章

minIO集成springboot

问题 minIO与spring集成。 步骤 创建桶 创建key 找到创建账号页面,如下图: 点击创建,如下图: 设置如下权限: {"Version": "2012-10-17","Statement": [{"Effect": &q…

Google 地图参考手册

Google 地图参考手册 引言 Google 地图作为全球最受欢迎的地图服务之一,不仅提供了详细的地理信息和导航服务,还整合了丰富的商业信息、用户评价和街景视图。本手册旨在为用户提供一个全面而深入的Google地图使用指南,帮助用户更好地利用这一强大的工具。 目录 Google 地…

codeforces round 948 div2(a,b,c)

题目链接 A #include<bits/stdc.h>using namespace std;#define int long long #define PII pair<int,int>void solve() {int n,m;cin>>n>>m;if(n&1){if((m&1)&&m>1&&m<n)cout<<"YES"<<\n;else…

HDFS和FDFS

HDFS&#xff08;Hadoop Distributed File System&#xff09;和FDFS&#xff08;FastDFS&#xff09;是两种不同的分布式文件系统&#xff0c;它们各自有不同的设计目标和使用场景。以下是对它们的详细介绍&#xff1a; HDFS&#xff08;Hadoop Distributed File System&…

树莓派docker自制镜像

挂载img文件到目录 cd /a/img tar -czvf rr.tar.gz ./ docker import tt.tar.gz rootpi:/home/pi/2# docker tag ff142da9042f arm7:v01 rootpi:/home/pi/2# docker images REPOSITORY TAG IMAGE ID CREATED SIZE arm7 …

python的异常

异常 定义 异常是程序执行中发生的错误事件&#xff0c;它可以打断正常的指令流。Python提供了强大的异常处理机制&#xff0c;允许程序在发生错误时执行某些替代指令&#xff0c;而不是直接崩溃。 类型 TypeError&#xff1a;类型错误&#xff0c;比如尝试将字符串和整数相加。…

vue3 学习笔记13 -- 生命周期和防抖节流

vue3 学习笔记13 – 生命周期和防抖节流 生命周期 创建周期&#xff08;Composition API&#xff09; setup(): 这不是生命周期钩子&#xff0c;但它是组合API的入口点&#xff0c;用于执行任何启动逻辑。 更新周期 onBeforeMount(): 在组件挂载之前调用&#xff0c;此时虚拟…

音视频开发入门教程(1)如何安装FFmpeg?共210节

安装FFmpeg的具体步骤会根据你使用的操作系统而有所不同。以下是Windows和Linux系统上安装FFmpeg的基本步骤&#xff1a; Windows系统 下载FFmpeg安装包&#xff1a; 访问FFmpeg的官方网站&#xff1a;FFmpeg。点击页面上方的“Download”按钮。在下载页面&#xff0c;找到适…

Jenkins安装nodeJs环境

首先插件市场安装nodeJS插件&#xff0c;我这里已经安装了&#xff0c;没安装的话在 Available plugins 中搜索安装 安装完成后需要下载需要的nodejs版本 新增完成就可以在构建的时候选择当前版本号了

从基础知识到应用实例,一站式掌握 Python 正则表达式

前言 大家好&#xff0c;我是阔升。今天&#xff0c;我要和大家聊聊 Python 中的正则表达式。正则表达式可谓是编程界的“瑞士军刀”&#xff0c;能用来处理各种复杂的字符串操作。本文将通过几个有趣的例子&#xff0c;带你学习正则表达式。 正则表达式基础 在 Python 中&a…

JMeter接口测试之文件上传(参数提取与传递)

参考文档&#xff1a; Jmeter接口测试-文件上传&#xff08;全网最详细的教程&#xff09;_jmeter 文件上传-CSDN博客 1、首先通过fiddler抓取文件上传接口&#xff0c;在Raw的tab页中查看默认请求头以及请求参数 如图所示 2、在jmeter中导入抓取的接口&#xff0c;首先需要配…

新书速览|深入理解Hive:从基础到高阶:视频教学版

《深入理解Hive&#xff1a;从基础到高阶&#xff1a;视频教学版》 本书内容 《深入理解Hive:从基础到高阶:视频教学版》采用“理论实战”的形式编写&#xff0c;通过大量的实例&#xff0c;结合作者多年一线开发实战经验&#xff0c;全面地介绍Hive的使用方法。《深入理解Hiv…

AI算法18-最小角回归算法Least Angle Regression | LARS

​​​ 最小角回归算法简介 最小角回归&#xff08;Least Angle Regression, LAR&#xff09;是一种用于回归分析的统计方法&#xff0c;它在某些方面类似于最小二乘回归&#xff0c;但提供了一些额外的优点。最小角回归由Bradley Efron等人提出&#xff0c;主要用于处理具有…

【Linux】安装PHP扩展-redis

说明 本文档是在centos7.6的环境下&#xff0c;安装PHP7.4之后&#xff0c;安装对应的PHP扩展包redis。 一、下载redis扩展 pecl官方地址:PECL :: The PHP Extension Community Library 下载的版本是&#xff1a;redis-5.3.7.tgz 二、安装redis扩展 1.上传 redis 压缩包到…

基于STM32设计的物联网智能鱼缸(微信小程序)(187)

基于STM32设计的物联网智能鱼缸(微信小程序)(187) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的…

Amazon Bedrock 常用场景及 Python 实现

Amazon Bedrock 是 AWS 提供的一项全托管服务,它为开发者提供了一系列高性能的基础模型(Foundation Models,FMs)。通过单一 API,开发者可以访问来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的模型。本文将介绍 Amazon Bedrock 的几个…

深入异步JavaScript:掌握Promises与async/await

引言 异步编程允许JavaScript代码在等待某些耗时操作&#xff08;如网络请求、文件读写等&#xff09;完成时&#xff0c;继续执行其他任务&#xff0c;而不是阻塞整个程序的运行。这种编程模式极大地提高了应用的响应速度和效率。 JavaScript中的异步编程基础 同步与异步代…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…

MySQL面试题-重难点

mysql中有哪些锁&#xff1f;举出所有例子&#xff0c;各个锁的作用是什么&#xff1f;区别是什么&#xff1f; 共享锁&#xff1a;也叫读锁&#xff0c;简称S锁&#xff0c;在事务要读取一条记录时&#xff0c;先获取该记录的S锁&#xff0c;别的事务也可以继续获取该记录的S…

[Linux CMD] 文件编辑 nano (待更新)

【Linux】&#xff1a;文本编辑与输出命令 轻松上手nano、echo和cat_linux终端内容输出文本-CSDN博客