Python程序设计 字典

news2024/12/22 16:14:27

教学案例十 字典

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. 选择题

 

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

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

相关文章

MapReduce——ReudceTask并行度决定机制

MapReduce——ReudceTask并行度决定机制 1. Reduce任务的数量&#xff08;reduce task count&#xff09;&#xff1a; 这是最基本的决定因素之一。在作业启动时&#xff0c;用户可以指定Reduce任务的数量。更多的Reduce任务意味着更多的并行度&#xff0c;因为每个Reduce任务…

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

文章目录 一. GPT-1&#xff1a;无监督与微调1. 在GPT-1之前的监督学习的问题2. GPT-1中新的学习过程-无监督的预训练3. 复杂任务下的微调4. GPT-1为更强大的模型铺平了道路 二. GPT-2&#xff1a;context learning1. 核心思想&#xff1a;context learning2. GPT-2的数据集 三…

【面试经典 150 | 数组】罗马数字转整数

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

IoT、IIoT、AIoT的区别是什么?

一、IoT、IIoT、AIoT的区别是什么&#xff1f; IoT、IIoT和AIoT都是物联网&#xff08;Internet of Things&#xff09;的不同应用和发展方向&#xff0c;但它们之间存在一些区别。 IoT&#xff08;物联网&#xff09;&#xff1a;物联网是指通过互联网连接各种物理设备&#x…

RIP最短路实验(思科)

华为设备参考&#xff1a;RIP最短路实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;工作原理是每个路由器周期性地向邻居路由器发…

GPT-3.5 Turbo 的 temperature 设置为 0 就是贪婪解码?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 将 GPT-3.5 Turbo 的 temperature 设置为 0 通常意味着采用贪婪解码&#xff08;greedy decoding&#xff09;策略。在贪婪解码中&#xff0c;模型在每一步生成文本时选择概率最高的词元&#xff0c;从…

LeetCode题练习与总结:矩阵置零--73

一、题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xf…

每日一题---链表的中间结点

文章目录 前言1.题目2.题目分析2.1.思路一2.2.思路二&#xff08;快慢指针&#xff09; 3.参考代码3.1.代码1--思路13.2.代码2---思路2 前言 我们上一篇数据结构与算法的章节当中&#xff0c;我们学习到了单链表&#xff0c;下面我们做几篇中&#xff0c;我们做几道题&#xf…

PTA L2-052 吉利矩阵

题目 解析 这题考的是搜索剪枝 可行性剪枝&#xff1a; 即判断当前行&#xff08;列&#xff09;是否已经超过L和剩下的格子都填最大值是否小于L&#xff0c;若是则剪枝。 当前行数大于1时&#xff0c;判断上一个填完的行是否等于L&#xff0c;若否&#xff0c;则剪枝。 当前行…

nginx开启basic认证

basic认证也叫做http基本认证&#xff0c;防止恶意访问 首先用在线网站生成一个叫做htpasswd的账号密码文件。 将生成结果复制到/etc/nginx/htpasswd文件中 在server的location中配置 server { listen 80; server_name a.com;location / { root html;index index.…

用全连接对手写数字识别案例(附解决TensorFlow2.x没有examples问题)

数据集介绍 数据集直接调用可能出现问题&#xff0c;建议从官网直接下载下来&#xff0c;下载存在这四个文件 手写数字识别数据集下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1nqhP4yPNcqefKYs91jp9ng?pwdxe1h 提取码&#xff1a;xe1h 55000行训练数据集&a…

揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

文章目录 一、embeddings接口解析二、代码实现1.数据集dataset.csv2.代码3.运行结果 openai版本1.6.1 本系列博客源码仓库&#xff1a;gitlab&#xff0c;本博客对应文件夹03 在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。 首先来看实现思路&am…

TPG原理以及verilog实现

文章目录 一、前言二、verilog代码实现三、仿真以及结果分析 一、前言 TPG(video_test_pattern generator) 视频测试模式发生器用于产生测试数据&#xff0c;对视频数据通路测试。根据视频输出时序产生相应的图像数据 二、verilog代码实现 timescale 1ns / 1nsmodule tpg ( i…

超星图书转成PDF格式

转为pdf 为避免浪费您的时间&#xff0c;本篇转载文章不值得花费您的宝贵时间阅读 方法一 感谢医学插画动画杜鹏 Roison An两位提供的方法&#xff0c;经试验后简化了一下&#xff0c;得出以下方法:1、使用超星打开你想要转换的图书2、依次打开本书的所有页面&#xff0c;不要…

Vue3+TS版本Uniapp:项目前置操作

作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 环境&#xff1a;使用vscode进行开发 如果一开始是使用的HbuilderX&#xff0c;请看hbuilderX创建的uniapp项目转移到vscode 为什么选择vscode&#xff1f;有更好…

SpringCloud-搭建XXL-JOB任务调度平台教程

一、XXL-JOB任务调度平台介绍 XXL-JOB是一个轻量级分布式任务调度框架&#xff0c;旨在解决分布式系统中的任务调度问题&#xff0c;提高系统的处理效率和任务管理的便捷性。 1. XXL-JOB任务调度概念 XXL-JOB任务调度平台通过中心化管理方式&#xff0c;使得任务的调度更加高…

【Linux】小知识点温习---命令

许多常见命令会用&#xff0c;但是很少注意他们的区别&#xff1b;亦或在学习中使用较少&#xff0c;容易忘记&#xff0c;今天做一个回顾。 ls系列 -a:显示所有文件&#xff08;包括隐藏文件&#xff09; -l:将文件以竖列形式显示 -i&#xff1a;显示文件的inode编号 pwd 显…

基础SQL DDL语句

MySQL的DDL&#xff08;Data Definition Language&#xff09;语句用于定义或修改数据库结构。 DDL数据库操作 查看所有的数据库 show databases; 红色圈起来的是系统数据库&#xff0c;是系统自带的 mysql&#xff1a;包含存储MySQL服务器运行时所需信息的表。这包括数据字典…

HttpServlet,ServletContext,Listener它仨的故事

1.HttpServlet。 听起来是不是感觉像是个上古词汇&#xff0c;是不是没有阅读下去的兴趣了&#xff1f;Tomcat知道吧&#xff0c;它就是一个servlet容器&#xff0c;当用户向服务器发送一个HTTP请求时&#xff0c;Servlet容器&#xff08;如Tomcat&#xff09;会根据其配置找到…

【力扣 Hot100 | 第七天】4.22(移动零)

文章目录 1.移动零1.1题目1.2解法&#xff1a;双指针1.2.1双指针思路1.2.2代码实现 1.移动零 1.1题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数…