计算机二级Python基本操作题-序号46

Python 函数查询

1. 《卖火柴的小女孩》是丹麦童话故事作家安徒生的一篇童话故事,发表于1846年。主要讲了一个卖火柴的小女孩在富人阖家欢乐、举杯共庆的大年夜冻死在街头的故事。这里给出《卖火柴的小女孩》的一个网络版本文件,文件名为“小女孩.txt”。

  • 问题1:在PY301-1.py文件中修改代码,对“小女孩.tx”t文件进行字符频次统计,输出频次最高的中文字符(不包含标点符号)及其频次,将输出结果保存在考生文件夹下,命名为“PY301-1.txt”。字符与频次之间采用英文冒号"."分隔,示例格式如下:
    的:83
  • 问题2:在PY301-2.p文件中修改代码,对“小女孩.txt“文件进行字符频次统计,按照频次由高到低,输出前10个频次最高的字符,不包含回车符,字符之间无间隔,连续输出,将输出结果保存在考生文件夹下,命名为PY301-2.txt”。示例格式如下:
    ,的一…(后略,共10个字符)
  • 问题3:在PY301-3.py文件中修改代码,对"小女孩.txt"文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车。将排序后的字符及频次输出到考生文件夹下,件名为“小女孩-频次排序.txt”。字符与频次之间采用英文冒号".“分隔,各字符之间采用英文逗号”,"分隔,参考CSV格式,最后无逗号,文件内部示例格式如下:
    着:30,那:29,火:29
# PY301-1.py

fi = open("小女孩.txt","r") # 打开文件"小女孩.txt",以只读模式打开
fo = open("PY301-1.txt","w") # 打开文件"PY301-1.txt",以写入模式打开
txt = fi.read() # 读取文件中的全部内容,保存到变量txt中
d = {} # 创建一个空字典d,用来保存每个字符出现的次数
exclude = ",。!?、()【】<>《》=:+-*—“”…" # 定义一个字符串exclude,用来保存需要排除的字符

# 遍历txt中的每个字符,统计每个字符出现的次数
for word in txt:
    # 如果字符在exclude中,则跳过不统计
    if word in exclude:
        continue
    # 如果字符不在exclude中,则将该字符的出现次数加1
    else:
        d[word] = d.get(word,0) + 1

ls = list(d.items()) # 将字典d转换为一个列表ls,每个元素是一个元组,包含字符和出现次数两个值
ls.sort(key = lambda x:x[1],reverse = True) # 对列表ls进行排序,按照元素的第二个值(出现次数)进行**降序排序**
fo.write("{}:{}".format(ls[0][0],ls[0][1])) # 将出现次数最高的字符和对应的出现次数写入到文件"PY301-1.txt"中
fo.close() # 关闭文件"PY301-1.txt"
fi.close() # 关闭文件"小女孩.txt"
# PY301-2.py

fi = open("小女孩.txt","r") # 打开文件"小女孩.txt",以只读模式打开
fo = open("PY301-2.txt","w") # 打开文件"PY301-2.txt",以写入模式打开
txt = fi.read() # 读取文件中的全部内容,保存到变量txt中
d = {} # 创建一个空字典d,用来保存每个字符出现的次数

# 遍历txt中的每个字符,统计每个字符出现的次数
for word in txt:
    # 如果字符是换行符,则跳过
    if word == "\n":
        continue
    # 如果字符在字典d中已经存在,则将该字符的出现次数加1
    if word in d:
        d[word] += 1
    # 如果字符在字典d中不存在,则将该字符添加到字典d中,并将出现次数初始化为1
    else:
        d[word] = 1

ls = list(d.items()) # 将字典d转换为一个列表ls,每个元素是一个元组,包含字符和出现次数两个值
ls.sort(key = lambda x:x[1], reverse = True) # 对列表ls进行排序,按照元素的第二个值(出现次数)进行降序排序

# 将出现次数最高的前10个字符写入到文件"PY301-2.txt"中
for i in range(10):
    fo.write(ls[i][0])

fi.close() # 关闭文件"小女孩.txt"
fo.close() # 关闭文件"PY301-2.txt"
# PY301-3.py

fi = open("小女孩.txt","r") # 以只读模式打开名为 "小女孩.txt" 的文件
fo = open("PY301-2.txt","w") # 以写入模式打开名为 "PY301-2.txt" 的文件
txt = fi.read() # 读取文件中的文本内容
d = {} # 创建一个空字典
 
# 遍历文本中的每个字符并将其添加到字典中,如果字符已经在字典中,则将其数量加1
for word in txt:
    d[word] = d.get(word, 0) + 1
 
# 删除字典中的空格和换行符
del d[" "]
del d["\n"]
 
ls = list(d.items()) # 将字典转换为列表
ls.sort(key = lambda x:x[1], reverse = True) # 按照值(也就是词频)从大到小排序
 
# 将列表中的每个元素转换为字符串,格式为 "字符:词频"
for i in range(len(ls)):
    ls[i] = "{}:{}".format(ls[i][0],ls[i][1])
 
# 将列表中的所有元素用逗号连接成一个字符串,并将其写入文件中
fo.write(",".join(ls))
 
# 关闭文件
fi.close()
fo.close()

items()

描述:Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。
items()方法语法:dict.items()

list(seq)

描述:list() 方法用于将元组转换为列表。
list()方法语法:list( seq )

get(key, default=None)

描述:Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
get()方法语法:dict.get(key, default=None)

2. 法定节假日是根据各国、各名族的风俗习惯或纪念要求,由国家法律统一规定的用以进行庆祝及度假的休息时间。法定节假日制度是国家政治、经济、文化制度的重要反映,涉及经济社会的多个方面,涉及广大人民群众的切身未法定节假日的休假安排,为居民出行购物和休闲提供了时间上的便利,为拉动内需、促进经济增长做出了积极益。贡献。给出一个2018年的节假日的放假日期CSV文件,内容示例如下:

序号节假日名称开始月日结束月日
1元旦12300101
2春节02150221
3清明节04050407
4劳动节05010503
5端午节06160618

以第1行为例,1230表示12月30日,0101表示1月1日。

  • 问题1:在PY301-1.py文件中修改代码,读入CSV文件中数据,获得用户输入。根据用户输入的节假日名称,输出此节假日的假期范围。
    参考输入和输出示例格式如下:
    请输入节假日名称(例如,春节):春节
    春节的假期位于0215-0221之间

  • 问题2:在PY301-2.py文件中修改代码,读入CSV文件中数据,获得用户输入。用户键盘输入一组范围是1~7的整数作为序号,序号间采用空格分隔,以回车结束。屏幕输出这些序号对应的节假日的名称、假期范围,每个节假日的信息一行。本次屏幕显示完成后,重新回到输入序号的状态。
    参考输入和输出示例格式如下:
    请输入节假日序号:1 5
    元旦(1) 假期是12月30日至01月01日之间
    端午节(5)假期是06月16日至06月18日之间
    请输入节假日序号:

  • 问题3:在问题2的基础上,在PY301-3.py文件中修改代码,对键盘输入的每个序号做合法性处理。如果输的数字不合法,请输出”输入节假日编号有误!",继续输出后续信息,然后重新回到输入序号的状态。
    参考输入和输出示例格式如下:
    请输入节假日序号:5 14 11
    端午节(5)假期是06月16日至06月18日之间
    输入节假日编号有误!
    输入节假日编号有误!
    请输入节假日序号:

# PY301-1.py

fi = open("PY301-vacations.csv","r")
ls = []
for line in fi:
      ls.append(line.strip("\n").split(","))
fi.close()
s = input("请输入节假日名称:")
for line in ls:
      if s == line[1]:
            print("{}的假期位于{}-{}之间".format(line[1],line[2],line[3]))
# PY301-2.py

fi = open("PY301-vacations.csv","r")
ls = []
for line in fi:
      ls.append(line.strip("\n").split(","))
s = input("请输入节假日序号").split(" ")
while True:
      for i in s:
            for line in ls:
                  if i == line[0]:
                        print("{}({})的假期位于{}月{}日至{}月{}日之间".format(line[1],line[0],line[2][0] + line[2][1],line[2][2] + line[2][3],line[3][0] + line[3][1],line[3][2] + line[3][3]))
      s = input("请输入节假日序号:").split(" ")
# PY301-3.py

fi=open("PY301-vacations.csv","r")
ls = []
for line in fi:
      ls.append(line.strip("\n").split(","))
s = input("请输入节假日序号:").split(" ")#由于可以输入多个节假日的序号,所以需要进行逐个的遍历访问,所以通过split()函数来存放在列表中进行方便访问
while s != "":
      for i in s:
            flag = false
            for line in ls:
                  if i == line[0]:
                         print("{}({})假期是{}月{}日至{}月{}日之间".format(line[1],line[0],line[2][0] + line[2][1],line[2][2] + line[2][3],line[3][0] + line[3][1],line[3][2] + line[3][3]))
                         flag = True
            if flag == false:
                   print("输入节假日编号有误!")
      s = input("请输入节假日序号:").split(" ")

strip([chars]):删除字符串开头和末尾的空格或指定字符。
join(seq):以指定字符串作为分隔符,将 se 中所有的元素(的字符串表示)合并为一个新的字符串
sort()函数:用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
在这里插入图片描述

3. 《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子言行。这里给出了一个网络版本的 《论语》,文件名称为“论语.txt”,其内容采用逐句“原文”与“逐句”注释相结合的形式组织,通过【原文】标记《论语》原文内容,通过【注释】标记《论语》注释内容,具体文件格式框架请 参考“论语.txt”文件。

  • 问题1: 在PY301-1.py文件中修改代码,提取“论语.txt”文件中的原文内容,输出保存为文件 “论语-原文txt”。具体要求:仅保留“论语txt”文件中所有【原文】标签下面的内容,不保留标签,并去掉每行行首空格及行尾空格,无空行。原文小括号及内部数字是源文件中注释项的标记,请保留。
  • 问题2:在PY302-2.py文件中修改代码,对“论语-原文.txt”文件进一步提纯,去掉每行文字中所有小括号及内部数字,保存为“论语-提纯原文.txt”文件。
#PY301-1

fi = open("论语.txt","r")
fo = open("论语-原文.txt","w")
flag = False
for line in fi:
	if "【原文】" in line:
		flag = true
		continue
	if flag == True:
		fo.write(line.lstrip())
fi.close()
fo.close()
#PY302-2

fi = open("论语-原文.txt","r")
fo = open("论语-提取原文.txt","w")
for line in fi:
	if i in range(1,23):
		line = line.replace("({})".format(i),"")
	fo.wirte(line)
fi.close()
fo.close()

4. 下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,文件名称为“sensor.txt”,其内容示例如下:

2016/5/31 0:05,vawelon001,1,1
2016/5/31 0:20,earpa001,1,1
2016/5/31 2:26,earpa001,1,6
…(略)
第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层,第四列是传感器所在的位置区域编号。

  • 问题1:在PY301-1. py文件中修改代码,读入sensor. txt文件中的数据,提取出传感器编号为earpa001的所有数据,将结果输出保存到“earpa001. txt”文件。输出文件格式要求:原数据文件中的每行记录写入新文件中,行尾无空格,无空行。参考格式如下:
    2016/5/31 7:11, earpa001,2,4
    2016/5/31 8:02, earpa001,3,4
    2016/5/31 9:22, earpa001,3,4
    …(略)
  • 问题2(10分):在PY301-2.py文件中修改代码,读入“earpa001.txt”文件中的数据,统计earpa001对应的职员在各楼层和区域出现的次数,保存到“earpa001 count.txt”文件,每条记录一行,位置信息和出现的次数之间用英文半角逗号隔开,行尾无空格,无空行。
    参考格式如下:
    1-1,5
    1-4,3
fi = open("sensor.txt","r")
fo = open("earpa001.txt","w")
txt = fi.readlines()
for line in txt:
	ls = line.strip("\n").split(",")
	if 'earpa001' in ls:
		fo.write("{},{},{},{}\n".format(ls[0],ls[1].ls[2],ls[3]))
fi.close()
fo.close()
fi = open("earpa001.txt","r") # # 打开名为"earpa001.txt"的文件,以只读模式读取文件内容,将其赋值给变量fi
fo = open("earpa001_count.txt","w") # # 打开名为"earpa001_count.txt"的文件,以写入模式打开文件,将其赋值给变量fo
d = {} # 创建一个空字典,用于存储每个区域的数量统计结果
for line in fi: # 遍历文件fi中的每一行
	split_data = line.strip("\n").split(",") # 使用strip方法去除每行末尾的换行符,并使用split方法以逗号为分隔符将每行内容分割成一个列表
	floor_and_area = split_data[-2] + " -" + split_data[-1] # 将该行内容中倒数第二个元素和最后一个元素拼接成一个字符串,用于表示该行内容所属的区域
	if floor_and_area in d: # 如果该区域已经在字典d中,则将该区域对应的值加1
    	d[floor_and_area] += 1 # 如果该区域不在字典d中,则将该区域添加到字典d中,并将其对应的值设置为1
  else:
    d[floor_and_area] = 1
ls = list(d.items()) # 将字典d转换为列表,并按照列表中元素的第二个元素(即数量统计结果)从大到小排序
ls.sort(key = lambda x:x[1], reverse = True) # 该语句用于排序

# 遍历排序后的列表,并将每个区域的数量统计结果写入文件fo中
for i in range(len(ls)):
  fo.write('{},{}\n'.format(ls[i][0],ls[i][1]))

# 关闭文件fi和fo
fi.close()
fo.close()

5. 《傲慢与偏见》是史上震撼人心的“世界文学十部最佳小说之一”。第一章的内容由考生文件夹下文件arrogant.txt给出

  • 问题1:编写程序,统计该篇文章的英文字符数(不统计换行符),字符与出现次数之间用英文冒号“:”分隔。
  • 问题2:在问题1的前提下,将得到的字符次数记行排序,并将排名前10的常用字符保存在"arrogant-sort.txt"文件中。
# PY301-1

fi = open("arrogant.txt","r")
fo = open("PY301-1.txt","w")
txt = fi.read()
d = {}
for s in txt:
    d[s] = d.get(s,0) + 1
del d["\n"]
ls = list(d.items())
for i in range(len(ls)):
        fo.write("{}:{}\n".format(ls[i][0],ls[i][1]))
fi.close()
fo.close()
# PY301-2

fi = open("arrogant.txt","r")
fo = open("arrogant-sort.txt","w")
txt = fi.read()
d = {}
for s in txt:
    d[s] = d.get(s,0) + 1
del d["\n"]
ls = list(d.items())
ls.sort(key = lambda x:x[1],reverse = True)
for i in range(10):
        fo.write("{}:{}\n".format(ls[i][0],ls[i][1]))
fi.close()
fo.close()

6. Score.csv文件中存储的是一个学生在第一季度同一学科对应的月考成绩,求出每一门学科在三个月中的平均成绩,将结果输出在考生文件夹。

fi = open("score.csv","r")
fo = open("avg-score.txt","w")
ls = []
x = []
sum = 0
for row in fi:
    ls.append(row.strip("\n").split(","))
for line in ls[1:]:
    for i in line[1:]:
        sum = int(i) + sum
        avg = sum / 3
    x.append(avg)
    sum = 0
fo.write("语文:{:.2f}\n数学:{:.2f}\n英语:{:.2f}\n物理:{:.2f}\n科学:{:.2f}".format(x[0],x[1],x[2],x[3],x[4]))
fi.close()
fo.close()

7. 马和骆驼都是哺乳动物的一种,它们都有四只脚,体型也差不多大,作为现实世界中的一个类生物,我们将在这里为它们编写属于它们各自的类。

  • 问题1:在PY301-1py 文件中修改代码,代码中编写了一个马(Home)的类,在这个类中马有三个属性,分别是年龄(age)、品种(category)和性别(gender)。在每创建一个马的对象时,我们需要为其指定它的年龄、品种和性别。该类中还编写一个get_deseriptive ()方法,能够打印出马的这三个属性。每一匹马都有自己的最快速度,所以类中有一个speed() 方法可以打印出马的最快速度值。并且在马的生命过程中,它的速度一直在变,类中还有一个update_speed()方法用来更新马当前的最快速度值。
    例如:一匹12岁的阿拉伯公马,在草原上奔跑的速度为50km/h,要求调用get_descriptive()和update_speed()方法,将输出的结果保存在考生文件夹下,文件命名为“PY301-1.txt”。
  • 问题2:在PY301-2.py文件中修改代码,该代码编写了一个骆驼类(Camel),这个类继承自上一个文件中的马类但是不对马类中的属性和方法进行操作。因为每个骆驼的驼峰数量不一致,我们在类中添加驼峰数目这个新属性,并且添加一个打印出骆驼驼峰数量的方法。
    例如:一个双峰驼20岁的母骆驼以每小时40千米的速度奔跑在沙漠中,调用父类的方法和Camel类本身的方法将结果保存在“PY301-2.txt"中。
# PY301-1

fo = open("PY301-1.txt","w")
class Horse ():
	def _init_(self, category, gender, age):
		self.cataegory = category
		self.gender = gender
		self.age = age
		self.horse_speed = 0
	def get_descriptive(self):
		info = 'this horse is' + str(self.age) + 'years old,' + 'its category is' + self.category + ',' + 'its gender is’ + self.gender + '.'
		fo.write(info + "\n")
	def update_speed(self,new_speed):
		self.horse_speed = new_speed
		fo.write('the speed of this horse is' + str(self.horse_speed) + "km/h.\n")
horse = Horse("Arab","male","12")
horse.get_descriptive()
horse.update_speed(50)
fo.close()
# PY301-2

fo = open("PY301-2.txt""w")
class Horse():
	def _init_(self, category, gender, age):
		self.cataegory = category
		self.gender = gender
		self.age = age
		self.horse_speed = 0
	def get_descriptive(self):
		info = 'this horse is' + str(self.age) + 'years old,' + 'its category is' + self.category + ',' + 'its gender is’ + self.gender + '.'
		fo.write(info + "\n")
	def update_speed(self,new_speed):
		self.horse_speed = new_speed
		fo.write('the speed of this horse is' + str(self.horse_speed) + "km/h.\n")
class Camel(Horse):
	def _init_(self, category, gender, age):
		super()._init_(category, gender, age)
		self.hump_size = 2
	def describe_hump_size(self):
		fo.write('this camel has' + str(self.hump_size) + 'hump.')
camel = Camel("Double hump","female","20")
camel.get_descriptive()
camel.update_speed(40)
camel.describe_hump_size()
fo.close()

8. 凯撒密码是一种非常古老的加密算法,相传当年凯撒大帝行军打仗时为了保证自己的命令不被敌军知道,它采用了替换方法对信息中的每一个英文字符循环替换为字母序列该字符后面第三个字符:即循环后三位,对应关系如下:

原文:A B C D E FG H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
原文字符P,其密文字符C满足如下条件:
C=(P+3)mod 26
解密方法反之,满足:
P=(C-3)mod 26
凯撒密码的加密算法程序首先接受用户输入的文本,然后对字母a-z和字母A-Z按照密码算法进行转换,同时输出。其他非英文字母原样输出。

intxt = input("请输入明文:")
for p in intxt:
	if "a" < p < "z":
		print(chr(ord("a") + (ord(p) - ord("a") + 3) % 26), end = "")
	elif "A" < p < "Z":
		print(chr(ord("A") + (ord(p) - ord("A") + 3) % 26), end = "")
	else:
		print(p, end = "")

9. 李白,字太白,号青莲居士,又号“谪仙人”,是唐代伟大的浪漫主义诗人,被后世誉为“诗仙”。考生文件夹下有一个“关山月.txt”文件,内容如下:

明月出天山,苍茫云海间。长风几万里,吹度玉门关。汉下白登道,胡窥青海湾。由来征战地,不见有人还。成客望边邑,思归多苦颜。高楼当此夜,叹息未应闲。

  • 问题1:这是一段由标点符号分隔的文本,请编写程序,以“。”句号为分隔,将这段文本转换为诗词风格,输出到文件“关山月-诗歌.txt”中。
  • 问题2:把问题1生成的“关山月-诗歌.xt”文件,以每行为单位,保留标点符号为原顺序和位置,输出全文的反转形式。将文件保存在考生文件夹下并命名为“关山月-反转.txt”。输出的形式如下:
    高楼当此夜,叹息未应闲。
    戍客望边邑,思归多苦颜。
    由来征战地,不见有人还。
    汉下白登道,胡窥青海湾。
    长风几万里,吹度玉门关。
    明月出天山,苍茫云海间。
fi = open("关山月.txt","r")
fo = open("关山月-诗歌.txt","w")
txt = fi.read()
ls = txt.split("。")
fo.write("。\n".join(ls))
fi.close()
fo.close()

join(seg):以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串

fi = open("关山月-诗歌.txt","r")
fo = open("关山月-反转.txt","w")
txt = fi.readlines()
txt.reverse()
for row in txt:
    fo.write(row)
fi.close()
fo.close()

10. 设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,若输入的不是26个小写字母,让用户重新输入;若字母在答案之前或之后,程序给出相应正确提示;若答错5(含)次,则答题失败并退出游戏,若回答正确,程序输出回答次数并退出游戏。

import random
letter_list = ['a', 'b', 'c', 'd', 'e', 'f','g',
 'h', 'i', 'j', 'k', 'l','m', 'n',
 'o', 'p', 'q', 'r', 's', 't',
 'u', 'v', 'w', 'x', 'y', 'z']
letter = letter_list[random.randint(0, 25)]
count = 0
while True:
    letter_input = input("请输入26个小写英文字母中的任一个:")
    count += 1
    if letter_input not in letter_list:
        print("请重新输入字母")
    else:
        if count >= 5:
            print("猜测超过5次,答题失败")
            break
        else:
            if letter_input == letter:
                print("恭喜你答对了,总共猜了{}次".format(count))
            elif letter_input > letter:
                print("你输入的字母排在该字母之后")
            elif letter_input < letter:
                print("你输入的字母排在该字母之前")
            else:
                print("未知错误") 

11. 某班学生评选一等奖学金,学生的10门主干课成绩存在考生文件夹下文件score.txt中,每行为一个学生的信息,分别记录了学生学号、姓名以及10门课成绩,格式如下:

1820161043 郑珉稿 68 66 83 77 56 73 61 69 66 78
1820161044 沈红伟 91 70 81 91 96 80 78 91 89 94

从这些学生中选出奖学金候选人,条件是:①总成绩排名在前10名;②全部课程及格(成绩大于等于60)。

  • 问题1:给出按总成绩从高到低排序的前10名学生名单,并写入文candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。补充考生文件夹下文件PY301-1.py,完成这一功能。
  • 问题2:读取文件candidate0.txt,从中选出候选人,并将学号和姓名写入文件candidatetxt格式如下:
    1010112161722 张三
    1010112161728 李四
    补充考生文件夹下文件PY301-2.py完成这一功能。
L = []                          #L中的元素是学生原始成绩和总成绩
fo = open("score.txt","r")
fi = open("candidate0.txt","w")
lines = fo.readlines()
for line in lines:
    line = line.strip()
    student = line.split(' ')
    sum = 0
    for i in range(1,11):
        sum += int(student[-i])
    student.append(str(sum))
    L.append(student)
L.sort(key = lambda x:x[-1],reverse = True)   #按学生总成绩从大到小排序
for i in range(10):
    fi.write(" ".join(L[i][:-1]) + "\n")
fo.close()
fi.close()
fo = open("candidate0.txt","r")
fi = open("candidate.txt","w")
L = [] # 存储候选人
lines = fo.readlines()
for line in lines:
    line = line.strip()
    student = line.split(' ')
    for i in student[-10:]:
        if int(i) < 60:
            break;
    else:
        L.append(student[:2])
for i in L:
    fi.write(" ".join(i) + "\n")#此时每个i本身就是列表
fi.close()
fo.close()

12. 《三国演义》是中国古典四大名著之一,曹操是其中主要人物,考生文件夹下文件data.txt给出《三国演义》简介

  • 问题1:请编写程序,用Pthon语言中文分词第三方库iieba对文件datatxt进行分词,并将结果写入文件out.txt,每行一个词,例如:
    内容简介
    编辑
    整个
    故事

    东汉

    在考生文件夹下给出了程序框架文件PY301-1.py,补充代码完成程序。
  • 问题2:对文件out.txt进行分析,打印输出曹操出现次数。在考生文件夹下给出了程序框架文件PY301-2.py,补充代码完成程序。
import jieba
f = open('data.txt','r')   
lines = f.readlines()
f.close()
f = open('out.txt','w')    
for line in lines:     
    line = line.strip()              #删除每行首尾可能出现的空格
    wordList = jieba.lcut(line)         #用结巴分词,对每行内容进行分词
    f.writelines('\n'.join(wordList))  #将分词结果存到文件out.txt中
f.close()
import jieba
f = open('out.txt','r')    #以读的方式打开文件
words = f.readlines()
f.close()
D = {}
for w in words:        #词频统计
    D[w[:-1]] = D.get(w[:-1],0) + 1
print("曹操出现次数为:{}  ".format(D['曹操']))

join()

python之read()方法

  1. read()方法
    read()方法,当不规定读取多少字符时,读的时文件的全部字符
    2、readlines()方法
    readlines(),读取所有数据,读取的所有的数据,会形成一个列表,列表的每一项就是一行数据
    3、readline()方法
    readline方法,读取文件一行数据,如果不关闭文件,可以一直读取
#①read()方法
f=open(r"C:\Users\Administrator\Desktop\text.txt","r",encoding="UTF-8")
print(f.read())
print(f.read(10))
f.close()

#②readlines()方法
f=open(r"C:\Users\Administrator\Desktop\text.txt","r",encoding="UTF-8")
print(f.readlines())
f.close()

#③readline()方法
f=open(r"C:\Users\Administrator\Desktop\text.txt","r",encoding="UTF-8")
print(f.readline())
print(f.readline())
f.close()

sort和sorted的区别

  • sort是应用在list(也就是列表)上的方法,属于列表的成员方法;而sorted是Python内置的全局方法,可以对所有可迭代对象进行排序操作
  • list的sort方法是对已存在的列表进行操作;而内建函数sorted的结果会返回一个新生成的列表,而不是在原有列表的基础上进行操作
  • sort的使用方法为list.sort(),而sorted的使用方法为sorted(list)

sorted()

语法:sorted(iterable=None,key=None,reverse=False)
参数说明:
iterable:可迭代对象
key:该参数的值为一个函数,此函数只有一个参数,并且返回一个值用来进行比较。
reverse:排序规则,reverse=False 升序(默认),reverse=True 降序

sort()

sort语法:list.sort(key=None,reverse=False)
两个参数跟上面sorted的参数一样
在使用的时候要注意的是list.sort()没有返回值,也就是返回值为None。

python字典排序方法

1. 利用自定义函数lambda

说明:通过dic.items()获取由字典键名和键值(key 、value)组成的元组列表,然后通过自定义函数,获取元组的第2个元素作为排序的依据(即根据字典的键值来排序)
默认是按照升序排列(此时可省略reverse=False)

dic={'a': 4, 'b': 3, 'c': 2, 'd': 1}
sorted(dic.items(), key=lambda x: x[1],reverse=False)
sorted(dic.items(), key=lambda x: x[1],reverse=True)

在这里插入图片描述
如果是降序排列可以把reverse设为True

2. 利用operator的方法

说明:功能是返回一个可调用对象,该对象可以使用操作__getitem__()方法从自身的操作中捕获item。如果制定了多个items,返回一个由查询值组成的元组。例如:运行f =itemgetter(2),然后调用f(r),返回r[2]。这里通过operator获得了dic.items()中的键值。注意operator是内置的包,无需安装。

dic={'a': 4, 'b': 3, 'c': 2, 'd': 1}
import operator
sorted(dic.items(), key=operator.itemgetter(1))

3. 列表推导式法

dic={'a': 4, 'b': 3, 'c': 2, 'd': 1}
tup=[(x[1],x[0]) for x in dic.items()]
[(x[1],x[0]) for x in sorted(tup)]

说明:用列表推导式,交换元组中元素的位置,排序后再交换回来,这种方法有点儿麻烦,但是逻辑清楚,适合新手。

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

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

相关文章

IOday8作业

使用消息队列完成两个进程之间相互通信(多进程) #include<myhead.h>//定义结构体 struct buf {long mtype;char mtest[1024]; };#define SIZE (sizeof(struct buf)-sizeof(long))//进程 int main(int argc, const char *argv[]) {//创建keykey_t key1 ftok("/&quo…

系统韧性研究(7)| 韧性系统的16大指导原则

不良事件和条件可能会中断系统&#xff0c;导致系统无法提供必要的功能和服务。正如我在本系列的前几篇文章中所概述的那样&#xff0c;韧性是大多数系统的一个基本质量属性&#xff0c;因为它们提供了关键的能力和服务&#xff0c;尽管存在着不可避免的困难&#xff0c;但这些…

前沿重器[39] | 对话式推荐系统——概念和技术点

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

Java设计模式-单例(Singleton)设计模式的概述及实现

目录 &#x1f436;1 设计模式概述 &#x1f436;2 何为单例模式 &#x1f436;3 实现思路 &#x1f436;4 饿汉式实现代码 &#x1f436;5 懒汉式实现代码 &#x1f436;6 对比两种模式&#xff08;特点、优缺点&#xff09; &#x1f436;7 单例模式的优点及应用场景 &…

Python中的魔力编程:掌握面向对象之道

Python中的面向对象编程 背景&#xff1a; ​ 最近在看一些代码的时候&#xff0c;对类中的一些内置方法不是很懂&#xff0c;因此出一篇文章来细说一下&#xff0c;希望大家看完后对Python中类有一个清楚的认识。 基础铺垫&#xff1a; ​ 面向对象的三个特点&#xff1a;…

【设计模式--结构型--享元模式】

设计模式--结构型--享元模式 享元模式定义结构实现案例优缺点使用场景 享元模式 定义 运用共享技术来有效的支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅减少需要创建的对象数量&#xff0c;避免大量相似的对象的开销&#xff0c;从而提高系统资源的利用率。 …

创建并测试第一个django项目并解决过程中遇到的问题

Django 是一个高级 Python Web 框架&#xff0c;它鼓励快速开发和简洁、实用的设计。它由经验丰富的开发人员构建&#xff0c;解决了 Web 开发的大部分麻烦&#xff0c;因此您可以专注于编写应用程序&#xff0c;而无需重新发明轮子。它是免费和开源的。 目录 一、django项目 …

官宣!「湾区之光群星演唱会」拉开2024新年音乐华丽序幕!

万众期待&#xff0c;群星荟萃&#xff01;青春宝安时尚湾区——湾区之光群星演唱会即将在2024年1月5日闪耀亮相深圳宝安。 华语歌坛巨星天后齐聚一堂&#xff0c;携手多位实力唱将&#xff0c;共同呈现一场无与伦比的演唱会盛宴&#xff01;在深情而又充满力量的歌声之中&…

孩子还是有一颗网安梦——Bandit通关教程:Level 0 → Level 1

&#x1f575;️‍♂️ 专栏《解密游戏-Bandit》 &#x1f310; 游戏官网&#xff1a; Bandit游戏 &#x1f3ae; 游戏简介&#xff1a; Bandit游戏专为网络安全初学者设计&#xff0c;通过一系列级别挑战玩家&#xff0c;从Level0开始&#xff0c;逐步学习基础命令行和安全概念…

LabVIEW开发矿井排水监控系统

LabVIEW开发矿井排水监控系统 针对矿井水害对煤矿安全生产构成的威胁&#xff0c;设计了一种基于嵌入式PLC和LabVIEW的矿井排水监控系统。该系统结合了PLC的可靠控制与单片机的应用灵活性&#xff0c;有效克服了传统排水方法中的不足&#xff0c;如测量不准确、效率低下等问题…

Java:字符流 文件输出 与 读入 方法

Java&#xff1a;字节流 文件输出与读入方法 并 实现文件拷贝 文章目录 字符流FileReaderFileWrite 字符流 字符流底层就是字节流。 字符流 字节流 字符集 特点&#xff1a; 输入流&#xff1a;一次读入一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流…

图-数据结构

图的介绍 如果你有学过《离散数学》&#xff0c;那么对图的概念一定不陌生&#xff0c;在计算机科学中&#xff0c;一个图就是一些顶点的集合&#xff0c;这些顶点通过一系列边连接&#xff08;结对&#xff09;。顶点用圆圈表示&#xff0c;边就是这些圆圈之间的连线。注意&a…

Design patterns--代理模式

设计模式之代理模式 我们使用Qt开发大型应用程序时&#xff0c;经常遇见大型程序启动时需要加载一些配置信息、用户末次操作信息&#xff0c;以及算法模型等数据时比较费时&#xff0c;笔者在程序启动时设计欢迎页或加载页等窗体来提示用户程序正在加载某些数据&#xff0c;加载…

【Java数据结构 -- 顺序表】

List和ArrayList与顺序表 一. List1.1 List介绍2.1 常见接口介绍3.1 List的使用 二. ArrayList与顺序表1.线性表2.顺序表2.1 接口的实现2.2 顺序表的创建2.3 顺序表的打印2.4 顺序表的插入2.5 顺序表的按索引位置插入数据2.6 判断顺序表是否包含某个数2.7 返回顺序表某个数的索…

谁会成为第一个MoE大模型基座呢?重磅!Mixtral MoE 8x7B!!!

文章目录 谁会成为第一个MoE大模型基座呢&#xff1f;重磅&#xff01;Mixtral MoE 8x7B&#xff01;&#xff01;&#xff01;前言重磅&#xff01;Mixtral MoE 8x7B&#xff01;&#xff01;&#xff01;Mixtral是啥模型介绍模型结构长啥样&#xff1f;表现如何&#xff1f;可…

Python从入门到精通五:Python数据容器

数据容器入门 为什么学习数据容器 思考一个问题&#xff1a;如果我想要在程序中&#xff0c;记录5名学生的信息&#xff0c;如姓名。 如何做呢&#xff1f; 学习数据容器&#xff0c;就是为了批量存储或批量使用多份数据 Python中的数据容器&#xff1a; 一种可以容纳多份…

HCIA-H12-811题目解析(10)

1、【单选题】DHCP客户端在租期到达哪个比例时第一次发送续租报文&#xff1f; 2、【单选题】在WLAN中用于标识无线网络&#xff0c; 区分不同的无线网络的是&#xff1f; 3、【单选题】我们在笔记本电脑上搜索可接入无线网络时&#xff0c;显示出来的网络名称实际是 4、【单…

哪些原因导致MES管理系统实施项目失败

在制造业中&#xff0c;实施MES管理系统是一种提高生产效率、降低成本、提升质量的重要手段。然而&#xff0c;许多MES管理系统实施项目并未取得预期的成功&#xff0c;甚至失败。本文将探讨导致MES管理系统实施项目失败的原因。 1、需求不明确 在MES实施项目中&#xff0c;需…

Java-异常(一)-异常的概述和常见异常的举例

&#x1f436;b站视频 124-异常处理-异常的概述与常见异常的举例_哔哩哔哩_bilibili 目录 b站视频 5.1 异常概念 5.2 Error 示例代码 5.3 Exception异常划分 ❓面试题&#xff1a;常见的异常有哪些&#xff1f;举例说明 &#x1f436;5.1 异常概念 在使用计算机语言进行…

基于SSM的校园心理健康网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…