Python 实验五 高级数据结构

news2024/11/24 17:19:47

一、实验目的

(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 s

psStr=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)+1

for i in dict:
    print("{0}({1}),".format(i,dict.get(i)),end='')

五、总结

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

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

2. 实验收获

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

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

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

相关文章

数据库的约束条件和用户管理

约束条件: 主键:主键约束 primary key 用于标识表中的主键列的值,而且这个值是全表当中唯一的,而且只不能为null 一个表只能有一个主键。 外键:用来建立表与表之间的关系。确保外键中的值于另一个表的主键值匹配&a…

camtasia怎么剪掉不用的部分 屏幕录制的视频怎么裁剪上下不要的部分 camtasia studio怎么裁剪视频时长 camtasia怎么剪辑视频教程

有时我们录制的屏幕内容,并不一定全部需要。那么,屏幕录制的视频怎么裁剪上下不要的部分?可以使用视频剪辑软件,或者微课制作工具来进行裁剪。屏幕录制的视频怎么旋转?录制视频的旋转也是一样的,均在编辑步…

可视化工具选择指南:助力企业数字化转型和新质生产力发展

随着信息技术的快速发展和新质生产力概念的兴起,可视化工具在各个行业中的作用日益凸显。这些工具不仅能够帮助用户更直观地理解和分析数据,还能提升团队的协作效率和决策质量。 在当今数字化转型迅速发展的背景下,新质生产力的概念正在成为…

Spring Boot项目的404是如何发生的

问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…

【React笔记初学总结一】React新手的学习流程笔记总结,掰开了揉碎了,下载安装基础结构学习

REACT学习记录 一、React是什么:二、尝试安装下载:三、理解都有什么四、基础网页学习:1.几个比较重要的资源包例子2.第一个react示例:(掰开了揉碎了,咱们先看懂它最简单的结构)3.第二个react示例…

Vue--Router(路由)

目录 一 Router(路由) 1.作用 2.实现步骤 3.注意 一 Router(路由) 1.作用 Router又叫做路由,简单来说,就是用来实现vue的页面之间跳转的。 我们都知道,使用vue必然会涉及到很多个组件,也就是页面,而页面之间肯定需…

mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据

效果: mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据 相关依赖api: 1. map.getExtent(); 提取地球当前视域边界,示例:{ xmin: 70, xmax: 140, ymin: 0, ymax: 55, height: 0, } 2.graphicLayer.eachGraphic遍…

Android12 MultiMedia框架之NuPlayer Surface

在学习NuPlayer创建Decoder和Renderer之前,得先看下video数据最终生产到什么地方去?答案是Surface,而且Surface是NuPlayer创建Decoder的条件。 APP会创建一层SurfaceView来显示视频层,同时内部会创建一个BLASTBufferQueue&#x…

睡前故事—绿色科技的未来:可持续发展的梦幻故事

欢迎来到《Bedtime Stories Time》。这是一个我们倾听、放松、并逐渐入睡的播客。感谢你收听并支持我们,希望你能将这个播客作为你睡前例行活动的一部分。今晚我们将讲述绿色科技的未来:可持续发展的梦幻故事的故事。一个宁静的夜晚,希望你现…

自适应简约大气科技数码产品公司网站源码系统 模版一键搭建 可自定义带源代码包以及搭建部署教程

系统概述 在当今这个数字化、信息化的时代,科技数码产品行业正处于高速发展的黄金时期。为了在这个竞争激烈的市场中脱颖而出,科技数码产品公司不仅需要拥有卓越的产品和技术,还需要一个能够完美展现其品牌形象和产品特色的网站。为此&#…

【PyTorch快速入门教程】02 Jupyter notebook安装及配置

文章目录 1 安装 Jupyter notebook2 安装 ipykernel3 更改 jupyter 默认配置3.1 生成配置文件3.2 关键配置信息 4 扩展插件推荐参考 1 安装 Jupyter notebook 一行命令搞定 python -m pip install jupyter 现在就可以打开Jupyter notebook来运行python啦。 jupyter notebook…

印尼语翻译通:AI驱动的智能翻译与语言学习助手

在这个多元文化交织的世界中,语言是连接我们的桥梁。印尼语翻译通,一款专为打破语言障碍而生的智能翻译软件,让您与印尼语的世界轻松接轨。无论是商务出差、学术研究,还是探索印尼丰富的文化遗产,印尼语翻译通都是您的…

自动驾驶系列—智能巡航辅助功能中的车道中央保持功能介绍

文章目录 1. 背景介绍2. 功能定义3. 功能原理4. 传感器架构5. 实际应用案例5.1 典型场景1:直道内行驶5.1.1 直道内居中行驶5.1.2 直道内跟车行驶 5.2 典型场景2:弯道内行驶5.2.1 弯道内居中行驶5.2.2 弯道内跟车行驶 5.3 典型场景3:道路边缘5…

【Godot4.2】MLTag类:HTML、XML通用标签类

概述 HTML和XML采用类似的标签形式。 之前在Godot中以函数库形式实现了网页标签和内容生成。能用,但是缺点也很明显。函数之间没有从属关系,但是多有依赖,而且没有划分出各种对象和类型。 如果以完全的面向对象形式来设计标签类或者元素类…

【Android】常见控件及使用

视图的设置 控件与布局都继承于视图,因此视图的设置方式对其作用都是一样的,接下来就先讲述视图的不同设置方式 设置视图的宽高: 对视图的宽高进行设置,首先确保XML中的宽高属性值为wrap_content,接着打开该页面对应…

MySQL第七次作业

Product表内容 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 产品编号 Int(10) 是 否 是 是 否 Name 产品功能 Varchar(20) 否 否 是 否 否 Function 主要功能 Varchar(50) 否 否 否 否 否 Company 生产厂家 Varchar(20) 否 否 是 否 否 Address 家庭住址 Varchar(20…

VS2022配置Qt环境

文章目录 前言VS2022写Qt的好处下载插件前提条件离线下载在线安装配置VS For Qt 创建项目总结 前言 在许多开发环境中,Visual Studio 2022(VS2022)和Qt都是非常重要的工具。VS2022是微软开发的一款强大的集成开发环境(IDE&#x…

学习面向对象笔记

1. 面向对象三大特性 特性说明例子接口作为方法的标识,只要调用即可,不需要关心接口后是怎样实现的最常见的USB接口,只要插上对应的鼠标、键盘就可以使用,因为他们都是统一使用这个USB接口的继承子类继承父类的功能,子…

React工程化笔记

脚手架可以帮助我们快速的搭建一个项目结构,在我们之前学习 webpack 的过程中,每次都需要配置 webpack.config.js 文件,用于配置我们项目的相关 loader 、plugin,这些操作比较复杂,但是它的重复性很高,而且…

Spring Cloud Eureka快读入门Demo

1.什么是Eureka? Eureka 由 Netflix 开发,是一种基于REST(Representational State Transfer)的服务,用于定位服务(服务注册与发现),以实现中间层服务的负载均衡和故障转移&#xff…