Python程序设计 字典

教学案例十 字典

1. 判断出生地

sfz.txt文件中存储了地区编码和地区名称

身份证的前6位为地区编码,可以在sfz.txt文件中查询到地区编号对应的地区名称

 

编写程序,输入身份证号,查询并显示对应的地区名称 若该地区编码不在文件中,显示地区名称 未知

文件操作

,

,

,

 注意:字符串.strip(指定字符)方法,返回去除字符串尾部的指定字符后的字符串。若不指定字符,则去除尾部的空格和换行符。

字典的建立

,

若要建立以地区编码为键,地区名称为值的字典,可以打开文件,读取一行,将前六个字符(地区编号)作为键,第七个字符到最后(地区名称)作为值,建立字典。

,

对所有的行循环,就可以建立所有地区编号和名称的字典。

,

字典的查找

<字典>.get(<键>,<默认值>) 在字典中,若存在该键,则返回相应的值,否则返回默认值 如果地区字典dqzd已经建立,通过get方法可以查找编码对应的地区名称,若无法找到,则返回未知

,

sfzh=input("请输入身份证号")
#代码开始
f1=open("step6//sfz.txt","r",encoding='GBK')
dq = {}
for i in f1.readlines():
    i = i.strip()
    dq[i[:6]]=i[6:]

print("地区名称",dq.get(sfzh[:6],"未知"))
#代码结束

2. 统计文档中作者作品数量

编写一个能计算文档《唐诗.txt》中各位作者作品数量的程序。 遍历文档中每一行,提取作者的姓名,将其作为键加入到字典中,字典的值为作品数量。 然后将字典转换为二维列表,按作品数量的降序排列。

字典的操作

字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示 d = {key1 : value1, key2 : value2 } 建立空字典 d={} 向字典添加新内容的方法是增加新的键/值对 d["范仲淹"]=1 则d为{"范仲淹":1} 修改键值对的方法为 d["范仲淹"]=2 则d为{"范仲淹":2} d["范仲淹"]的值为2

d.get(key,default)键存在则返回相应值,否则返回默认值

字典转换为二维列表

lt = list(d.items()) 可将字典转换为二维列表, 二维列表的每项值为列表,列表的第一项为字典的键,第二项为字典的值

f1=open("sy9//唐诗.txt","r",encoding='GBK')
#代码开始
zd = {}
for i in f1.readlines():
    i = i.strip()
    if i[:3].isdigit()==True:
        n = i.split(":")[0][3:]
        zd[n]=zd.get(n,0)+1

lb = list(zd.items())
lb.sort(key=lambda x:x[1],reverse=True)
#代码结束
for i in lb:
    print("诗人{}作品{}".format(i[0],i[1]))
f1.close()

3. 计算成绩及排序

成绩.csv如下所示,记录了同学的语数外的成绩、综合测评和体育成绩

综合测评有ABCD四个等级,体育成绩有优秀良好及格不及格四个等级 ABCD折算为100、80、60、0。 优秀良好及格不及格折算为100、80、60、0 现计算每个人的总分并从高到低的排序,显示姓名和总分。

f1=open("sy9//成绩.csv","r",encoding="utf8")
zh={"A":100,"B":80,"C":60,"D":0}
ty={"优秀":100,"良好":80,"及格":60,"不及格":0}
#代码开始
xx = []
for i in f1.readlines():
    i = i.strip().split(",")
    cj = int(i[1])+int(i[2])+int(i[3])+zh[i[4]]+ty[i[5]]
    xx.append([i[0],cj])

xx.sort(key=lambda x:x[1],reverse=True)
#代码结束
for mm in xx:
    print("姓名{}成绩{}".format(mm[0],mm[1]))
f1.close()

4. 统计语文成绩各等级人数

成绩.csv如下所示,记录了同学的语数外的成绩、综合测评和体育成绩

现要统计语文科目优秀(90分及以上)、良好(80分-90分)、及格(60分-80分)、不及格人数

f1=open("sy9//成绩.csv","r",encoding="utf8")
yw={"优秀":0,"良好":0,"及格":0,"不及格":0}
#代码开始
for i in f1.readlines():
    i = i.strip().split(",")
    n = int(i[1])
    if n >= 90:
        yw["优秀"] += 1
    elif n >= 80:
        yw["良好"] += 1
    elif n >= 60:
        yw["及格"] += 1
    else:
        yw["不及格"] += 1

#代码结束
print("语文")
for mm in yw:
    print("{}人数{}".format(mm,yw[mm]))
f1.close()

5. 统计语数外成绩各等级人数

成绩.csv如下所示,记录了同学的语数外的成绩、综合测评和体育成绩

 现要统计语数外各科目成绩优秀(90分及以上)、良好(80分-90分)、及格(60分-80分)、不及格人数。

f1=open("sy9//成绩.csv","r",encoding="utf8")
djrs=[]
km="语文","数学","英语"
for i in range(3):
    djrs.append({"优秀":0,"良好":0,"及格":0,"不及格":0})
#代码开始

for i in f1.readlines():
    i = i.strip().split(",")
    for j in range(3):
        n = int(i[j+1])
        if n >= 90:
            djrs[j]["优秀"] += 1
        elif n >= 80:
            djrs[j]["良好"] += 1
        elif n >= 60:
            djrs[j]["及格"] += 1
        else:
            djrs[j]["不及格"] += 1

#代码结束
for i in  range(3):
    print(km[i])
    for mm in djrs[i]:
        print("{}人数{}".format(mm,djrs[i][mm]))
f1.close()

6. 统计文件词语的词频

编写一个能统计文档中词语词频小程序。

统计文件中词频最高的15个词语(除了词牌名和作者) 注意:标题行的空格是全角空格" "(可复制此空格) 由于有一个词牌名为东风第一枝,需要将文件中的词牌名删除。(否则会多一个东风)

jieba库分词

jieba是Python中一个重要的第三方中文分词函数库 Jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。 jieba.lcut(s) 精确模式对字符串s分词,产生一个列表

import jieba
f1= open("sy9//唐诗.txt", "r",encoding="GBK")
#代码开始
lb = []
for i in f1.readlines():
    i = i.strip()
    if i[:3].isdigit()==True:
        i = i.split(":")[1]
        if i[3:5]=="二首":
            i = i[:3]
    n = jieba.lcut(i)
    for j in n:
        lb.append(j)

zd = {}
for i in lb:
    if len(i) == 1:
        continue
    else:
        zd[i]=zd.get(i,0)+1
        
zd["东风"]=zd.get("东风",0)-1
items=list(zd.items())
items.sort(key=lambda x:x[1],reverse=True)
#代码结束
for i in range(15):
    print("{} {}".format(items[i][0],items[i][1]))

7. 唐诗文件词云图片

根据唐诗文件生成一个词云图片文件,存放在sy9文件夹的pict文件夹下的sc1.png ,要求图片宽1000,高700背景颜色白色,最多300个词 ,注意:字体使用sy9文件夹下的simhei.ttf字体文件

生成词云图片

wordcloud库概述 wordcloud是python的一个三方库,称为词云也叫做文字云,是根据文本中的词频,对内容进行可视化的汇总.

wordcloud.WordCloud(参数)

font_path : string  #字体路径,需要展现什么字体就把该字体路径+后缀名写上,

如:font_path = 'sy9//simhei.ttf’

width : int (default=400) #输出的画布宽度,默认为400像素

height : int (default=200) #输出的画布高度,默认为200像素

background_color : color value (default=”black”) #背景颜色,如background_color='white',背景颜色为白色

max_words : number (default=200) #要显示的词的最大个数

import jieba
import wordcloud
f1= open("sy9//唐诗.txt", "r",encoding="GBK")
#代码开始
txt = f1.read()
pc = set()
f1.seek(0,0)
for line in f1:
    if " " in line:
        cp=line[:line.find(" ")]
        pc.add(cp)
        xm=line[line.find(" ")+1:].split("\n")
        pc.add(xm[0])

for i in pc:
    txt = txt.replace(i,"")
zd = {}
words = jieba.lcut(txt)
for i in words:
    if len(i) > 1:
        zd[i] = zd.get(i,0)+1
print(zd)
f1.close()
w=wordcloud.WordCloud(font_path="sy9//simhei.ttf",background_color="white",max_words=300,width=1000,height=700)
w.generate_from_frequencies(zd)

#代码结束
w.to_file("sy9//pict//sc1.png")

 8. 选择题

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11.事件处理

事件处理 我们可以使用 v-on 指令 (简写为 ) 来监听 DOM 事件&#xff0c;并在事件触发时执行对应的 JavaScript。用法&#xff1a;v-on:click"methodName" 或 click"handler" 事件处理器的值可以是 内联事件处理器&#xff1a;事件被触发时执行的内联 J…

不同版本vue安装vue-router

vue-router 是vue官网发布的一个插件库&#xff0c;单页面路由。vue 和 vue-router 之间版本也需要对应。 vue2.x版本使用vue-router3.x版本&#xff0c;vue3.x使用vue-router4.x版本&#xff0c;根据自己的需要选择合适的版本 1、可以在安装前查看vue-router版本&#xff0c;…

微信小程序开发笔记

微信小程序开发笔记 1 微信小程序的项目结构 2 页面组成 一个微信小程序是由一个或多个页面组成的&#xff0c;这些页面被存放在pages目录中。下面以pages 目录下的index页面为例展示其组成部分&#xff0c;index页面的组成部分如下图所示。 由上图可知&#xff0c;index页面…

Swift-20-基础数据类型

数据定义 语法规则 先来看下下面的代码 import Cocoavar num1 "four" //a var num2: String "four" //b var num3 4 //c var num4: Int 4 //d上面的几行代码都能正常运行&#xff0c;其中a和b行等价&#xff0c;c和d行等价。区另就在于是否声…

SpringBoot集成Sleuth

引入Maven依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency> 配置yml文件 bootstrap.yml文件增加如下配置 注&#xff1a;这个配置不是必须要&#…

嵌入式Linux开发实操(十七):Linux Media Infrastructure userspace API

视频和无线电流媒体设备使用的Linux内核到用户空间API,包括摄像机、模拟和数字电视接收卡、AM/FM接收卡、软件定义无线电(SDR)、流捕获和输出设备、编解码器设备和遥控器。典型的媒体设备硬件如下: 媒体基础设施API就是用于控制此类设备的,分五个部分。 第一部分V4L2 API…

Cpp_SDay03

何处染尘埃 文章目录 前言一、de bug二、disassembly&#xff08;代码变成汇编&#xff09;三、if loop总结 前言 重在坚持 一、de bug 消除bug&#xff08;debug&#xff09; ctrlaltm 再按1就调出了内存地址 可以在内存地址维度来看自己的赋值等 watch界面查看想查看的值 …

SpringCloud(二)

2.4、OpenFeign 请求需要的controller层代码实现跨项目的数据联调 OpenFeign是一个声明式的http客户端&#xff0c;是SpringCloud在Eureka公司开源的Feign基础上改造而来。官方地址: https:/lgithub.com/OpenFeign/feign 其作用就是基于SpringMVC的常见注解&#xff0c;帮我们优…

如何在本地创建一个新的Git仓库?

文章目录 **步骤一&#xff1a;开启项目之旅****步骤二&#xff1a;启动Git引擎****步骤三&#xff1a;验证仓库初始化情况****步骤四&#xff1a;填充项目内容****步骤五&#xff1a;保存更改——初次提交****&#xff08;可选步骤六&#xff1a;关联远程仓库并推送&#xff0…

还在找投稿邮箱?推荐一个靠谱的投稿平台给你

亲爱的朋友: 听说你还在为单位的信息宣传投稿考核而烦恼,四处寻找投稿邮箱,却屡屡碰壁,是吗?别着急,作为过来人,我想给你推荐一个靠谱的投稿平台——智慧软文发布系统网站。相信它能帮你轻松完成考核任务,让你的稿件更快更好地被媒体采纳。 想当年,我也曾像你一样,为了完成单…

分析和比较深度学习框架 PyTorch 和 Tensorflow

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 深度学习作为人工智能的一个重要分支&#xff0c;在过去十年中取得了显著的进展。PyTorch 和 TensorFlow 是目前最受欢迎、最强大的两个深度学习框架&#xff0c;它们各自拥有独特的特点和优势。 1. Py…

2024HW ---->内网横向移动

在蓝队的面试过程中&#xff0c;如果你会内网渗透的话&#xff0c;那是肯定的一个加分选项&#xff01;&#xff01;&#xff01; 那么从今天开始&#xff0c;我们就来讲一下内网的横向移动&#xff01;&#xff01;&#xff01; 目录 1.域内任意用户枚举 2.Password-Sprayi…

node的事件循环

异步同步啥的就不多说了&#xff0c;直接看node中有哪些是异步 其中灰色部分和操作系统有很大的关系&#xff0c;就不多说了&#xff0c;其中定时器属于timers队列&#xff0c;I/O操作属于poll队列&#xff0c;setImmediate属于check队列&#xff0c;其中nextTick和promise不属…

mklink 命令的使用(适用场景:C盘爆满,转移到其他盘)

一、背景 将Oracle数据库安装在D盘&#xff0c;由于磁盘爆满&#xff0c;需要将数据库转移到其他磁盘&#xff08;如&#xff1a;J盘&#xff09;。 在移动数据库之后&#xff0c;会出现数据库无法使用的情况&#xff0c;这时该如何解决&#xff1f;经了解&#xff0c;可以使用…

MariaDB InnoDB 空洞清理

1、背景 数据库占用服务器内存越来越高&#xff0c;除了bin-log文件之外&#xff0c;还发现了一些带有text或者longtext数据类型字段的表&#xff0c;这种表也会占用很高的服务器磁盘空间 数据库版本&#xff1a; 表引擎&#xff1a; InnoDB 数据量&#xff1a;清理之前1500万…

Xavier 初始化

Xavier 初始化 为什么在 W [ l ] n p . r a n d o m . r a n d n ( s h a p e ) n p . s q r t ( 1 n [ l − 1 ] ) W^{[l]}np.random.randn(shape)\times np.sqrt(\frac{1}{n^{[l-1]}}) W[l]np.random.randn(shape)np.sqrt(n[l−1]1​) 中需要乘以 n p . s q r t ( 1 n […

Linux服务器运维工具箱 监控管理建站一个脚本全搞定!

Linux服务器运维工具箱 监控管理建站一个脚本全搞定&#xff01; 一款全能脚本工具箱&#xff0c;使用shell脚本编写。专为Linux服务器监控、测试和管理而设计。无论您是初学者还是经验丰富的用户&#xff0c;该工具都能为您提供便捷的解决方案。集成了独创的Docker管理功能&a…

IDEA2024配置RunDashBoard(Services)面板

IDEA2024配置RunDashBoard(Services)面板 新版本的IDEA没有RunDashBoard&#xff0c;取而代之的是Services面板&#xff0c;不需要配置workspace.xml文件; 本文教你简单的方法就能一个SpringBoot的Main运行多次&#xff0c;方便调试。 1、配置启动类 导航栏&#xff0c;Edit…

sso-oauth2单点登录功能笔记

场景&#xff1a;最近公司2个系统需要做单点登录&#xff0c;A系统作为服务器&#xff0c;认证方式是sso-oauth2方式&#xff0c;B系统作为客户端&#xff0c;token方式是ta-token&#xff0c;先来张sso-oauth2认证方式的图 前置准备工作 第一步&#xff1a;要确认谁是服务提…

AI+PS快捷键大全!

hello&#xff0c;我是小索奇&#xff0c; 你会用Photoshop&#xff08;PS&#xff09;或者&#xff08;Illustrator&#xff09;AI吗&#xff1f;相信很多人都会接触到吧&#xff0c;但有一部分人很少用快捷键&#xff0c;仅凭借鼠标点击来实现功能&#xff0c;殊不知快捷键能…