计算机二级Python基本排序题-序号45(补充)

这篇具有很好参考价值的文章主要介绍了计算机二级Python基本排序题-序号45(补充)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 文件"singup.txt”中保存了若干条参加运动会学生的报名记录,每条记录的形式为“班级号_学号”,例如"A1_12”,将每个班级报名情按参加运动会人数从多到少排列(假设不存在人数相同的情况)并输出,输出结果如下:

A1->[‘12’,‘05’,‘07’,‘04’]
A4->[‘23’,‘03’,‘11’]
A3 ->[‘12’,‘01’]
A2->[‘07’]

def proc(stu_list): #定义函数
    d = {}
    for item in stu_list:
        r = item.split("_") #以"_"进行分隔
        a, b = r[0], r[1].strip() #提取出班级号和学号的信息
        if a in d:
            d[a] += [b] #"+"号用于组合列表
        else:
            d[a] = [b]
    lst = sorted(d.items(), key = lambda d:len(d[1]), reverse = True)
    return lst

f = open("signup.txt","r")        
stu_list = f.readlines() #返回列表类型
result = proc(stu_list) #调用函数
for item in result:
    print(item[0], '->', item[1])
f.close()

2. 在已定义好的字典pdict里有一些人名及其电话号码。请用户输入一个人的姓名,在字典中查找该用户的信息,如果找到,生成一个四位数字的验证码,并将名字、电话号码和验证码输出在屏幕上,如示例所示。如果查找不到该用户信息,则显示“对不起,您输入的用户信息不存在。”示例如下:

输入:
Bob
输出: Bob 234567891 1926
输入: bob
输出:
对不起,您输入的用户信息不存在。

import random
random.seed(2)

pdict = {'Alice':['123456789'],
        'Bob':['234567891'],
        'Lily':['345678912'],
        'Jane':['456789123']}

name = input('请输入一个人名:')
if name in pdict:
    print(name, pdict[name][0], random.randint(1000, 9999)) 
else:
    print('对不起,您输入的用户信息不存在。')

pdict[name]返回的是键对应的值,即列表[‘xxx’]
pdict[name][0]返回的是列表中的第一个元素,此时返回的是字符串

  • print()函数的标准格式:print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    value1, value2, … 是要打印的值,可以是任意数量的参数。
    sep 是用于分隔多个值的字符串,默认是一个空格。
    end 是打印结束时要添加的字符串,默认是换行符 \n。
    file 是指定输出的文件对象,默认是标准输出流 sys.stdout。
    flush 是一个布尔值,用于指定是否刷新输出缓冲区,默认为 False。

3. 在考生文件夹下有个文件PY202.py,定义了一个6个浮点数的一维列表lt1和一个包含3个数的一维列表lt2。

示例如下:
lt1 = [0.69,0.292,0.33,0.131,0.61,0.254]
lt2 = [0.1,0.8,0.2]
在横线处填写代码,完成如下功能。计算lt1列表跟lt2列表的向量内积,两个向量X=[x1,x2,x3]和Y= [y1,y2,y3]的内积计算公式如下:
k=x1*y1 + x2*y2 + x3*y3
将每次计算的两组对应元素的值、以及对应元素乘积的累计和(k)的值显示在屏幕上,格式如下所示:
k=0.069 ,lt2[0]=0.100 ,lt1[0+0]=0.690
k=0.303 ,lt2[1]=0.800 ,lt1[0+1]=0.292
k=0.369 ,lt2[2]=0.200 ,lt1[0+2]=0.330
…(略)
计算方式如下:
第一步计算第一个k,分为3次累加计算:
k=lt2[0]*lt1[0+0];
k=lt2[0]*lt1[0+0]+lt2[1]*lt1[0+1];
k=llt2[0]*lt1[0+0]+lt2[1]*lt1[0+1]+lt2[2]*lt1[0+2]
最终得到最后一个k值保存
第二步计算第二个k,分为3次累加计算:
k=lt2[0]*lt1[1+0];
k=lt2[0]*lt1[1+0]+lt2[1]*lt1[1+1];
k=llt2[0]*lt1[1+0]+lt2[1]*lt1[1+1]+lt2[2]*lt1[1+2]
最终得到最后一个k值保存,依照此规律依次计算。

img = [0.244, 0.832, 0.903, 0.145, 0.26, 0.452]
filter = [0.1,0.8,0.1]
res = []
for i in range(len(img) - 2) :
    k = 0
    for j in range(len(filter)) :
        k += filter[j] * img[j + i]
		print("k={:.3f} ,filter[{}]={:.3f} ,img[{}{}{}]={:.3f}".format(k, j, filter[j], i, '+', j, img[i + j]))
    res.append(k)
for r in res:
    print('{:<10.3f}'.format(r),end = '')

4. 获得用户的非数字输入,如果输入中存在数字,则要求用户重新输入,直至满足条件为止,并输出用户输入字符的个数,完善PY202.py文件中的代码。

while True:
    s = input("请输入不带数字的文本:")
    for i in range(10):
        if str(i) in s:
            break
    else:
        break
print(len(s))

5. 使用字典和列表型变量完成最有人气的明星的投票数据分析。投票信息由考生文件夹下文件vote.txt给出,一行只有一个明星姓名的投票才是有效票。有效票中得票最多的明星当选最有人气的明星。

问题1:请统计有效票张数。

f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:
    num = len(name.split()) #以空格为字符进行分割
    if num == 1:
        n += 1
print("有效票{}张".format(n))

问题2:请给出当选最有人气明星的姓名和票数

f = open("vote.txt")
names = f.readlines()
f.close()
D = {}
for name in names:
    if len(name.split()) == 1:
		D[name[:-1]] = D.get(name[:-1], 0) + 1
l = list(D.items())
l.sort(key = lambda s : s[1], reverse = True)
name = l[0][0]
score = l[0][1]
print("最具人气明星为:{},票数为:{}".format(name,score))

6. 在考生文件夹下有个文件PY202.py,在省略号处填写一行或多行代码,完成如下功能。同时,在考生文件夹下有个文件data.txt,其中记录了2019年QS全球大学排名前20名的学校信息,示例如下:

1,麻省理工学院,美国
2,斯坦福大学,美国
3,哈佛大学,美国

第一列为排名,第2列为学校名称,第3列为学校所属的国家,字段之间用逗号’,',隔开
程序读取data.txt文件内容,统计出现的国家个数以及每个国家上榜大学的数量及名称,输出结果格式示例如下:

英国: 5:牛津大学 剑桥大学 帝国理工学院 伦敦大学学院 爱丁堡大学
瑞士: 1:苏黎世联邦理工学院

f = open('data.txt','r')
dic = {}
for line in f:
    line = line.strip().split(',')
    if len(line) < 3:
        continue
    dic[line[-1]] = dic.get(line[-1], []) + [line[1]]
unis = list(dic.items())
f.close()
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d[0],len(d[1]),' '.join(d[1])))

" ".join()将列表中的字符串元素用空格连接成了一个新的字符串。

7. 考生文件夹下有个文件PY202.py,在省略号处填写一行或多行代码,完成如下功能。同时,在考生文件夹下有个文件out.txt,其中有一些数据库操作功能的执行时间信息,如下所示:

starting 0.000037 2102
After opening tables 0.000008 0.455
System lock 0.000004 0.227
Table lock 0.000008 0.455

其中第1列是操作的名字,第2列是操作所花费的时间,单位是秒,第3列是操作时间占全部过程的百分比,字段之间用逗号’,'隔开
修改考生文件夹下的文件PY202.py,读取out.txt文件里的内容,统计所有操作所花费的时间总和,并输出操作时间百分比最多的三个操作所占百分比的值,及其对应的操作名称,显示在屏幕上,如下所示:

the total execute time is 0.0017
the top 0 percentage time is 46.023,spent in “Filling schema table” operation

sumtime = 0
percls = []
ts = {}
with open('out.txt', 'r') as f:
    for i in f:
        i=i.strip().split(',')
        ts[i[0]]=eval(i[2])
        sumtime+=eval(i[1])
print('the total execute time is ', sumtime)

tns = list(ts.items())
tns.sort(key=lambda x: x[1], reverse=True)
for i in range(3):
    print('the top {} percentage time is {}, spent in "{}" operation'.format(i, tns[i][1],tns[i][0]))

8. 让用户输入一首诗的文本,内部包含中文逗号和向号。

(1)用jieba库的精确模式对输入文本分词。将分词后的词语输出并以"/"分隔;统计中文词语数并输出:
(2)以逗号和句号将输入文本分隔成单句并输出,每句一行,每行20个字符宽,居中对齐。在(1)和(2)的输出之间,增加一个空行。示例如下:

输入:月亮河宽宽的河,一天我从你身旁过,
输出:月亮/河/宽宽的/河/一天/我/从/你/身旁/过
中文词语数是:10
月亮河宽宽的河
一天我从你身旁过

import jieba
s = input("请输入一段中文文本,句子之间以逗号或句号分隔:")
slist = jieba.lcut(s)
m = 0

for i in slist:
   if i in ",。":
      continue
   m += 1
   print(i,end='/')   
      
print("\n中文词语数是:{}\n".format(m))

ss = ''
for i in s:
   if i in ',。':
      print('{: ^20}'.format(ss))
      ss = ''
      continue
   ss += i

9. 在考生文件夹下存在一个Python源文件PY202.py,请编写代码替换省略号,不可以修改已有代码,实现以下功能:

(1)定义一个列表persons,里面有一些名字字符串;
(2)在该列表中查找用户输入的一个名字字符串,如果找到,则生成一个四位数字的随机数组成的验证码,输出找到的名字字符串和验证码;如果找不到该字符串,则输出提示信息“对不起,您输入的名字不存在。”;如果用户输入一个字母“q,则退出程序;
(3)显示提示信息后,再次显示“请输入一个名字:”,提示用户输入,重复执行步骤2,执行3次后自动退出程序。

import random as r
r.seed(0)
persons = ['Aele', 'Bob','lala', 'baicai']
flag = 3
while flag>0:
    flag -= 1
    name = input('请输入一个名字:')
    if name == 'q':
        break
    elif name in persons:
        num = r.randint(1000,9999)
        print('{} {}'.format(name, num))
    else:
        print('对不起,您输入的名字不存在。')

10. 在考生文件夹下存在一个Python源文件PY202.py和一个介绍玫瑰花的文本文件data1.txt。请编写代码替换省略号,可修改其他代码,实现下面功能:

从data1.txt中读入文本,去掉文中的中文号、分号、双引号、句号和双引号;用ieba库精确模式分词,分词后的结果以"/"分隔,输出到屏幕上;统计分词结果中长度大于1的中文词语出现的词频,并将最高词频的前5个词及其词频,输出到屏幕上,每词一行,词和词频之间以英文冒号分隔。文章来源地址https://www.toymoban.com/news/detail-811891.html

import jieba
fuhao=[",",":","、","。",";","“","”"]       
with open("data1.txt","r",encoding="utf-8") as f:
    all_txt=f.read()
    for ch in fuhao:
        all_txt=all_txt.replace(ch,'')
   
data=jieba.lcut(all_txt)
print('/'.join(data))
print('高频词top5如下:')
d={}
for i in data:
    if len(i)>=2:
        d[i]=d.get(i,0)+1
ls=list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for s in ls[:5]:
    print('{}:{}'.format(s[0],s[1]))

11. 实现下面功能:(1)获取用户输入的一段文本,包含但不限于中文字符、中文标点符号及其他字符(2)用jieba的精确模式分词,统计分词后中文词语词频,具体为:将字符长度大于等于2的词语及其词频写入文件data2.txt,每行一个词语,词语和词频之间用冒号分隔。

import jieba

f = open('data2.txt', 'w')

s = input("请输入一个中文字符串,包含逗号和句号:")
k = jieba.lcut(s)
d1 = {}
for i in k :
	if len(i) >= 2 :
    	d1[i] = d1.get(i, 0) + 1
for j in d1 :
	f.write(j + ':' + str(d1[j]) + '\n')
f.close()

12. 实现下面功能:文件PY202.py里定义了一个字符串dela=‘-;:,.()"<>’,包含了需要去除的字符。获取用户输入的文本,去除字符串dela中的字符,用jieba精准分词后,统计并输出其中词语的个数。此外,本模板程序还将输出其他一些调试信息,请保留并按照提示给出相应输出,作为调试辅助。

import jieba
dela = '-;:,.()"<>'
s = input("请输入一句话:")
print("\n这句话是:{}".format(s))
for i in dela :
	s = s.replace(i, '')
word = jieba.lcut(s)
print("替换之后是:{}".format(s))
print("里面有 {}个词语。".format(len(word)))

到了这里,关于计算机二级Python基本排序题-序号45(补充)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python计算机二级知识点整理

    1.  一个完整的二叉树包括根节点,左子树和右子树,不同的遍历方式的区别就是访问的顺序的不同,前序遍历是首先访问根节点然后再访问左子树和右子树,中序遍历是访问根节点在访问左子树和右子树之间,后序遍历是先访问左子树和右子树再访问根节点。 2.结构化程序

    2024年02月09日
    浏览(47)
  • 二级考python和c语言哪个好,计算机二级python和c

    大家好,小编来为大家解答以下问题,二级python和二级c语言哪个更吃香一些,二级python和二级c语言哪个更吃香一点,今天让我们一起来看看吧!   计算机二级貌似只是在校园里的自嗨,出来工作后并没有觉得这个证书有什么用. 本人本科是测控与仪器专业,研究生方向图像

    2024年02月13日
    浏览(40)
  • 计算机二级python选择题易错题3

    1、以下关于Python字符编码的描述中,正确的是() A、Python字符编码使用ASCII编码存储 B、chr(x)和ord(x)函数用于在单字符和Unicode编码值之间进行转换 C、print(chr(\\\'a\\\'))输出97 D、print(ord(65))输出A 正确答案:B 2、以下的函数定义中,错误的是()。 A、def vfunc(s,a

    2024年02月05日
    浏览(47)
  • 计算机二级python基础题刷题笔记

    :引导符号(必须有) 填充:用于填充的单个字符,比如“=”,“+” 对齐:左对齐,右对齐,^居中对齐 宽度:槽的设定,输出宽度 ,:数字的千位分隔符适用于整数和浮点数 .精度:浮点数小数部分的精度或字符串的最大输出长度 类型:整数类型b,c,d,o,x,X浮点数类型e,E,f,% b 表示

    2024年02月07日
    浏览(46)
  • 【小白从小学Python、C、Java】【计算机等级考试二级-必会题】【Python中打开文件的open()方法】

    知识精讲 1、open()方法用于打开一个文件,在对文件进行处理的过程中都需要使用到该方法。 2、open()方法的语法格式为:open(file,mode=\\\'\\\'),file为文件路径,mode为文件打开模式。 3、文件打开模式包括: r:只读 w:写入,若该文件已存在则打开文件,覆盖原有内容,将新的内容写

    2023年04月25日
    浏览(46)
  • 计算机二级(六)

    循环队列( 易错):front=rear即头指针和尾指针相等,但是对应两种情况:一种是队列是空,一种是队列是满。  当rear大于front时,循环队列的长度:rear-front  当rear小于front时,循环队列的长度:分为两部分计算 0+rear   和   Quesize-front  ,  将两部分的长度合并到一起即为: r

    2024年02月07日
    浏览(40)
  • 计算机二级知识点整理

    翻到了之前准备计算机二级的笔记,现在给大家分享出来。 计算机把完成一条指令所花费的时间称为一个指令周期 结构化程序设计强调的是程序的易读性 boolean类型不能转为其他基本类型数据 表达式是由运算符和运算对象构成的,#不是运算符 a的ASCII码是97,以此类推 理论上

    2024年02月08日
    浏览(45)
  • 计算机二级java经典题目及其解析

    解析: 栈的存储空间为S(1:50),初始状态为top=51,表示栈的可用空间从S(1)到S(50),栈顶指针初始指向S(51)的位置,表示当前栈为空。 经过一系列正常的入栈与退栈操作后,top=50,表示栈顶指针已经向下移动了一个位置,指向了S(50)的位置,也就是说栈中的最后一个元素的位置为

    2024年02月16日
    浏览(37)
  • 【计算机二级考试C语言】C常量

    常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做 字面量 。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量 就像是常规的变量,只不过常量的值在定义后不能进行修改。 常量可以直接在代码中

    2024年01月17日
    浏览(47)
  • 【计算机二级考试C语言】C位域

    C 语言的位域(bit-field)是一种特殊的结构体成员,允许我们按位对成员进行定义,指定其占用的位数。 如果程序的结构中包含多个开关的变量,即变量值为  TRUE/FALSE ,如下: 这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1,在这种情况下

    2024年01月21日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包