大家好,欢迎来到IT知识分享网。
1.仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留3位。
a = pow((3^4+5*6^7)/8,0.5) print("%.3f"%a)
2.以第十九次全国代表大会报告中一句话作为字符串变量 s,完善 Python 程序,分别用 Python 内置函数及 jieba 库中已有函数计算字符串 s 的中文字符个数及中文词语个数。注意,中文字符包含中文标点符号。(提交的代码应包括题目中给出的部分)
import jieba s = "中国特色社会主义进入新时代,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。" n = ____①____ m = ____②____ print("中文字符数为{},中文词语数为{}。".format(n, m)),中文
3、0x4DC0 是一个十六进制数,它对应的 Unicode 编码是中国古老的《易经》六十四卦的第一卦,请输出第 51 卦(震卦)对应的 Unicode 编码的二进制、十进制、八进制和十六进制格式。
print("二进制{____①____}、十进制{____②____}、八进制{____③____}、十六进制{____
print("二进制{0:b}、十进制{0}、八进制{0:o}、十六进制{0:x}".format(0x4DC0+50))
4.列表 ls 中存储了我国 39 所 985 高校所对应的学校类型,请以这个列表为数据变量,完善 Python 代码,统计输出各类型的数量。
ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", "综合", "综合",\ "师范", "理工", "综合", "理工", "综合", "综合", "综合", "综合", "综合","理工",\ "理工", "理工", "理工", "师范", "综合", "农林", "理工", "综合", "理工", "理工", \ "理工", "综合", "理工", "综合", "综合", "理工", "农林", "民族", "军事"]
ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", \ "综合", "综合", "师范", "理工", "综合", "理工", "综合", "综合", \ "综合", "综合", "综合", "理工", "理工", "理工", "理工", "师范", \ "综合", "农林", "理工", "综合", "理工", "理工", "理工", "综合", \ "理工", "综合", "综合", "理工", "农林", "民族", "军事"] d = {} for word in ls: d[word] = d.get(word, 0) + 1 for k in d: print("{}:{}".format(k, d[k]))
5、《论语》是儒家学派的经典著作之一,主要记录了孔子及其弟子的言行。网络上有很多《论语》文本版本。这里给出了一个版本,文件名称为“论语-网络版.txt”,其内容采用如下格式组织:
【原文】
1.11子曰:“父在,观其(1)志;父没,观其行(2);三年(3)无改于父之道(4),可谓孝矣。”
【注释】
(略)
【译文】
(略)
【评析】
(略)
该版本通过【原文】标记《论语》原文内容,采用【注释】、【译文】和【评析】标记对原文的注释、译文和评析。
问题1:请编写程序,提取《论语》文档中所有原文内容,输出保存到“论语-提取版.txt”文件。输出文件格式要求:去掉文章中原文部分每行行首空格及如“1.11”等的数字标志,行尾无空格、无空行。参考格式如下(原文中括号及内部数字是对应源文件中注释项的标记):
子曰(1):“学(2)而时习(3)之,不亦说(4)乎?有朋(5)自远方来,不亦乐(6)乎?人不知(7),而不愠(8),不亦君子(9)乎?”
有子(1)曰:“其为人也孝弟(2),而好犯上者(3),鲜(4)矣;不好犯上,而好作乱者,未之有也(5)。君子务本(6),本立而道生(7)。孝弟也者,其为人之本与(8)?”
子曰:“巧言令色(1),鲜(2)仁矣。”
(略)
问题2:请编写程序,在“论语-提取版.txt”基础上,进一步去掉每行文字中所有括号及其内部数字,保存为“论文-原文.txt”文件。参考格式如下:
子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知,而不愠,不亦君子乎?”
有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为人之本与?”
子曰:巧言令色,鲜仁矣。”
fi = open("论语-网络版.txt", "r", encoding="utf-8") fo = open("论语-提取版2.txt", "w", encoding="utf-8") wflag = False #写标记 for line in fi: if "【" in line: #遇到【时,说明已经到了新的区域,写标记置否 wflag = False if "【原文】" in line: #遇到【原文】时,设置写标记为True wflag = True continue if wflag == True: #根据写标记将当前行内容写入新的文件 line = line.lstrip() #去除每行左边的空格 for i in range(0,25): for j in range(0,25): line = line.replace("{}·{}".format(i,j),"") for i in range(0,100): line = line.replace("{}".format(i),"") for i in range(0,100): line = line.replace("()","") # line = line.replace("*","") if line == "\n": line = line.strip("\n") fo.write(line)
6、如果当前时间是 2018年5月1日10点10分9秒,则下面代码的输出结果是
import time
print(time.strftime("%Y=%m-%d@%H>%M>%S", time.gmtime()))
7、根据输入字符串 s,输出一个宽度为 15 字符,字符串 s 居中显示,以“=”填充的格式。如果输入字符串超过 15 个字符,则输出字符串前 15 个字符。提示代码如下:
s = input() print(____①____)
s = input("请输入:")# "请输入一个字符串:" print("{:=^15}".format(s[0:15]))
8、
如下是一个完整程序,根据提示代码完成如下任务,输出如“2020年10月10日10时10分10秒”样式的时间信息。
____①____ timestr = "2020-10-10 10:10:10" t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S") print(time.strftime("____②____", t))
因为python版本造成的错误
import time timestr = "2020-10-10 10:10:10" t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S") print(time.strftime("%Y年%m月%d日%H时%M分%S秒", t))
解决办法:
import time
times = "2020-10-10 10:10:10"
t = time.strptime(times, "%Y-%m-%d %H:%M:%S")
t2 = time.strftime("%Y{0}%m{1}%d{2}%H{3}%M{4}%S{5}", t)
print(t2.format("年","月","日","时","分","秒"))
#或者
print((time.strftime("%Y{0}%m{1}%d{2}%H{3}%M{4}%S{5}", t)).format("年","月","日","时","分","秒"))
9、字符串变量str保存了气体浓度传感器的4条数据,每条数据的第一字段是传感器编号,第二字段是气体名称,第三字段是浓度值。示例如下:
TGS2402:甲醛:1.36
TGS2500:氮气:5.20
TGS2310:甲烷:1.70
TGS2820:乙烯:2.43
输入格式
无
输出格式
在屏幕上按照浓度值递减的顺序,显示输出每种气体名称,浓度,及其浓度在四种气体浓度中所占的百分比;示例如下:
氮气的浓度是:5.20,占比: 49%
str = 'TGS2402:甲醛:1.36\nTGS2500:氮气:5.20\nTGS2310:甲烷:1.70\nTGS2820:乙烯:2.43' ls = str.split("\n") sum = 0 fieds = [] for gas in ls: fi = gas.split(":") sum += eval(fi[2]) fieds.append(fi) fieds.sort(key=lambda x: x[2], reverse=True) for gas in fieds: print('{}的浓度是:{},占比:{:3.0f}%'.format(gas[1], gas[2], 100 * eval(gas[2]) / sum))
#{:3.0f} 表示,跟前面的字符保持三个空格,保留0位小数
10、
描述
从键盘输入5个整数,用逗号隔开,对这5个整数从小到大排序,并输出结果到屏幕上。编写一个冒泡排序的函数BubbleSort(numbers),并调用该函数完成排序。示例如下:
输入格式
显示:
请输入5个整数,用逗号隔开:
输入:
20,23,34,52,11
输出格式
11,20,23,34,52
def BubbleSort(numbers): for i in range(len(numbers)-1): for j in range(len(numbers)-1): if eval(numbers[j]) > eval(numbers[j+1]): numbers[j], numbers[j+1] = numbers[j+1],numbers[j] return numbers numbers = input() numls = numbers.split(",") sortednum = BubbleSort(numls) print(','.join(sortednum))
11、
用Python对证券行业期刊的文档进行主题词分析,选取的文档集包含2013年到2016年四年的近2000篇文档,从中提取每年度的主题词序列,其中一组在文件topic1.txt中,内容如下:
2013,客户公司券商服务交易资产投资产品收益
2014,收益公司券商客户资产投资交易服务资产证券化
2015,公司券商客户服务资产投资债券资产证券化融资融券收益
2016,公司客户服务券商资产投资债券管理
请利用jieba库分析上述四年的主题词提取有用的信息。
1)提取每一年的主题词的个数按照年度顺序显示在屏幕上;显示示例如下:
2013:9
2014:10
…
2)合计四年来的不同主题词的个数统计,以及每个主题词出现的次数按照主题词次数从大到小的顺序显示在屏幕上;显示示例如下:
4年出现的不同主题词有12个
资产:6
公司:4
投资:4
…
3)分析每一年相比前一年的主题词的差别,在屏幕显示出来;显示示例如下:
2014比2013多了主题词: 资产 证券化; 少了主题词: 产品
#自己瞎写的啊哈哈 import jieba #提取每一年的主题词的个数按照年度顺序显示在屏幕上 with open("topic1.txt", "r", encoding = "utf-8") as f: for line in f: l1 = line.strip().split(",")[1] l2 = jieba.lcut(l1) print("{}:{}".format(line.strip().split(",")[0], len(l2))) #合计四年来的不同主题词的个数统计,以及每个主题词出现的次数按照主题词次数从大到小的顺序显示在屏幕上 with open("topic1.txt", "r", encoding = "utf-8") as f: dic = {} l3 = "" for line in f: l2 = line.strip().split(",")[1] l3 = l3 + l2 l4 = jieba.lcut(l3.strip()) for word in l4: dic[word] = dic.get(word, 0) + 1 lis1 = [] for k,v in dic.items(): lis1.append([k,v]) lis1.sort(key = lambda x:x[1],reverse= True) for i in lis1: print("{}:{}".format(i[0],i[1]))
#第三问 import jieba with open("topic1.txt", "r", encoding = "utf-8") as f: read = [] read_f1 = f.readline() read_f2 = f.readline() read_f3 = f.readline() read_f4 = f.readline() read.append((read_f1,read_f2,read_f3,read_f4)) print(read) def func(x,y): r1 = x.strip().split(',') r2 = y.strip().split(',') r1_j = jieba.lcut(r1[1]) r2_j = jieba.lcut(r2[1]) r1_duo = [] r2_duo = [] for word1 in r1_j: if word1 in r2_j: continue else: r1_duo.append(word1) for word2 in r2_j: if word2 in r1_j: continue else: r2_duo.append(word2) r1_str = ','.join(r1_duo) r2_str = ','.join(r2_duo) return print("{}比{}多了主题词:{},少了主题词:{}".format(r2[0], r1[0],r2_str,r1_str)) for i in range(0,3): a = func(read[0][i],read[0][i+1])
12、
《命运》和《寻梦》都是著名科幻作家倪匡的科幻作品。这里给出一个《命运》和《寻梦》的网络版本,文件名为“命运-网络版.txt”和“寻梦-网络版.txt”。
问题1:请编写程序,对这两个文本中出现的字符进行统计,字符与出现次数之间用冒号:分隔,将两个文件前 100 个最常用字符分别输出保存到“命运-字符统计.txt”和“寻梦-字符统计.txt”文件中,该文件要求采用 CSV 格式存储,参考格式如下(注意,不统计回车字符):
命:90, 运:80, 寻:70, 梦:60 (略) |
问题2:请编写程序,对“命运-字符统计.txt”和“寻梦-字符统计.txt”中出现的相同字符打印输出。“相同字符.txt”文件中,字符间使用逗号分隔。
参考答案:
#第一问
names = ["命运", "寻梦"] for name in names: fi = open(name+"-网络版.txt", "r", encoding="utf-8") fo = open(name+"-字符统计.txt", "w", encoding="utf-8") txt = fi.read() d = {} for c in txt: d[c] = d.get(c, 0) + 1 del d['\n'] ls = list(d.items()) ls.sort(key=lambda x:x[1], reverse=True) for i in range(100): ls[i] = "{}:{}".format(ls[i][0], ls[i][1]) fo.write(",".join(ls[:100])) fi.close() fo.close()
#第二问 def getList(name): f = open(name+"-字符统计.txt", "r", encoding="utf-8") words = f.read().split(',') for i in range(len(words)): words[i] = words[i].split(':')[0] f.close() return words def main(): fo = open("相同字符.txt", "w") ls1 = getList("命运") ls2 = getList("寻梦") ls3 = [] for c in ls1: if c in ls2: ls3.append(c) fo.write(",".join(ls3)) fo.close() main()
#自己的思路:
#第一问 names = ["命运","寻梦"] for name in names: with open(name + "-网络版.txt", "r", encoding = 'utf-8')as f1: f1_read = f1.read() l1 = f1_read.strip() d = {} for word in l1: d[word] = d.get(word, 0) + 1 del d['\n'] list1 = [] for k,v in d.items(): list1.append([k,v]) list1.sort(key = lambda x:x[1],reverse= True) for i in range(100): list1[i] = "{}:{}".format(list1[i][0],list1[i][1]) with open(name + "-字符统计.txt", 'w', encoding = 'utf-8') as fo: fo.write(','.join(list1[:100]))
#第二问 f1 = open("命运-网络版.txt", "r", encoding = "utf-8") txt1 = f1.read() f2 = open("寻梦-网络版.txt", "r", encoding = "utf-8") txt2 = f2.read() l1 = [] l2 = [] l3 = [] for word1 in txt1: l1.append(word1) for word2 in txt2: l2.append(word2) l1_s = set(l1) l2_s = set(l2) l3_s = l1_s & l2_s #集合的交集性质 for a in txt1: if a in txt2: l1.append(a) with open("相同字符.txt", "w", encoding = "utf-8") as f3: f3.write(','.join(list(l3_s))) f1.close() f2.close()
13、
编写程序,获得用户输入的数值 M 和 N,求 M 和 N 的最大公约数。提示代码如下。
def GreatCommonDivisor(a,b): if a > b: a,b = b,a r = 1 while r != 0: ____①____ a = b b = r return a m = eval(input()) n = eval(input()) print(____②____)
def GreatCommonDivisor(a,b): if a < b: a, b = b, a r = 1 while r != 0: r = a % b a = b b = r return a n = eval(input(">>>")) m = eval(input(">>>")) print(GreatCommonDivisor(m,n))
14、
使用 turtle 库的 turtle.circle() 函数、turtle.seth() 函数绘制一个四瓣花图形,效果如下图所示。请结合程序整体框架,补充横线处代码,从左上角花瓣开始,逆时针作画。
import turtle as t for i in range(____①____): t.seth(____②____) t.circle(200, 90) t.seth(____③____) t.circle(200, 90)
import turtle as t for i in range(4): t.seth(90 * (i + 1)) #90,180,270,360 t.circle(200,90) #-90,0,90,180 t.seth(-90 + i * 90) t.circle(200,90)
15、
编写程序,实现将列表 ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] 中的素数去除,并输出去除素数后列表 ls 的元素个数。请结合程序整体框架,补充横线处代码。
def is_prime(n): ____①____ #此处可为多行函数定义代码 ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] for i in ls.copy(): if is_prime(i) == True: ____②____ #此处为一行代码 print(len(ls))
#下面代码是我自己写的,我觉得答案错了
#得到素数的函数
def is_prime(n): for j in range(2, n): if n % j == 0: return True ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] for i in ls.copy(): if is_prime(i)== True: ls.remove(i) #此处为一行代码 print(len(ls)) print(ls)
答案代码:
我觉得是错的
def is_prime(n): for i in range(2,n): if n % i == 0: return False return True ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] for i in ls.copy(): if is_prime(i) == True: ls.remove(i) print(len(ls))
16、
古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座和双鱼座。给出二维数据存储CSV文件(SunSign.csv),内容如下:
星座,开始月日,结束月日,Unicode
水瓶座,120,218,9810
双鱼座,219,320,9811
白羊座,321,419,9800
金牛座,420,520,9801
双子座,521,621,9802
巨蟹座,622,722,9803
狮子座,723,822,9804
处女座,823,922,9805
天秤座,923,1023,9806
天蝎座,1024,1122,9807
射手座,1123,1221,9808
摩羯座,1222,119,9809
请编写程序,读入CSV文件中数据,循环获得用户输入,直至用户输入 “exit” 退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。
输出形式参考代码:print(“{}座的生日位于{}-{}之间。”.format(……))
如果输入的星座名称有误,请输出“输入星座名称有误!”。
#自己的思路
with open("SunSign.csv", "r", encoding = "utf-8") as f: f1 = f.readlines() dic = {} for line in f1: lis = line.split(',') dic.update({lis[0]:(lis[1],lis[2],lis[3])}) while True: res = input("请输入要查询的星座:").strip() if res == 'exit': break tup = dic.get(res) if tup == None: print("输入星座名称有误!") else: print("{}座的生日位于{}-{}之间。".format(chr(eval(tup[2])),tup[0],tup[1]))
答案:
fo = open("SunSign.csv","r", encoding='utf-8') ls = [] for line in fo: line = line.replace("\n","") ls.append(line.split(",")) fo.close() while True: InputStr = input(">>>") # 请输入星座名称,例如双子座 InputStr.strip() flag = False if InputStr == 'exit': break for line in ls: if InputStr == line[0]: print("{}座的生日位于{}-{}之间。".format(chr(eval(line[3])),line[1],line[2])) flag = True if flag == False: print("输入星座名称有误!")
17、统计字符串 s 中前10个高频单词的出现次数,将单词和次数写入 wordnum.txt 文件
s = "What\'s a package, project, or release?We use a number of terms to describe software available on PyPI, like project, release, file, and package. Sometimes those terms are confusing because they\'re used to describe different things in other contexts. Here's how we use them on PyPI:A project on PyPI is the name of a collection of releases and files, and information about them. Projects on PyPI are made and shared by other members of the Python community so that you can use them.A release on PyPI is a specific version of a project. For example, the requests project has many releases, like requests 2.10 and requests 1.2.1. A release consists of one or more files.A file, also known as a package, on PyPI is something that you can download and install. Because of different hardware, operating systems, and file formats, a release may have several files (packages), like an archive containing source code or a binary wheel." s = s.lower() for ch in '\',?.:()': s = s.replace(ch," ") words = s.split() counts = {} for word in words: counts[word] = counts.get(word,0)+1 items = list(counts.items()) #这里学习一下 items.sort(key=lambda x:x[1],reverse = True) fo = open("wordnum.txt","w",encoding ="utf-8") for i in range(10): word,count = items[i] #这里学习一下 fo.writelines( word + ":" + str(count) + "\n") fo.close()
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32762.html