【计算机二级Python】综合题目

计算机二级python真题



在这里插入图片描述


一、简单应用题——字符串长度对比

设计打字测试功能代码。

默认原始字符串为“我爱你中国”,如果输入的字符串长度与原始字符串长度相同,则调用编程模板中Percentage 函数去计算这两个字符串对应位置相同的字符个数占字符总长度的百分比,按照示例的格式输出;

请参考编程模板及输入输出示例,完善程序。

示例1:

输入:“我爱你中国
输出:“我爱你中国”
输出:“100.00%”

示例 2:

输入: “我爱你江苏”
输出:“我爱你中国"
输出:“60.00%”

示例 3:

输入: “我爱你”
输出:“我爱你中国”
输出: “输入字符串长度不一致,请重新运行本程序!”

代码:

def Percentage(str1,str2):
    n = 0
    for s1,s2 in zip(str1,str2):
        if s1 == s2:
            n += 1
    return  n/len(str1)

s1 = "我爱你中国"
print(s1)

s2 = input()
if len(s1) != len(s2):
    print("输入字符串长度不一致,请重新运行本程序!")
else:
    print("{:.2%}".format(Percentage(s1,s2)))

Zip() 函数:https://www.runoob.com/python/python-func-zip.html

二、综合应用题——奖学金评选之一

某班级评选奖学金,奖学金人选条件是:1)总成绩排名在前 10 名;2)全部课程及格(成绩大于等于60)

所有学生的 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

请完成下列问题 1 和问题 2 的功能。(共2问,解答问题1)

问题1: 请筛选出按总成绩从高到低排序的前10名学生名单,并写入文件candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名、10 门课成绩以及总成绩。

文件candidate0 txt 的行记录参老格式如下:

1120161858 房某某 95 96 93 54 93 100 84 97 94 87 893
……

代码:

fi = open("score.txt","r")
lines = fi.readlines()
fi.close()
D = [] #单个学生的数据
L = [] #所有学生原始成绩和总成绩
#读取学生单科成绩并计算总成绩
for line in lines:
    D = line.strip().split()
    sum =0
    for i in range(2,12):
        sum += int(D[i])
    D.append(sum)
    L.append(D)
L.sort(key=lambda x:x[-1],reverse=True) #按学生总成绩从大到小排序

fo = open('candidate0.txt','w')
for i in range(10):
    for j in range(len(L[i])): #前十个学生数据写入文件中
        fo.write("{} ".format(L[i][j]))
    fo.write("\n")
fo.close()

问题2: 读取文件 candidate0.txt,根据评选条件 2,选出候选人,并将学号和姓名写入文件candidate.txt,格式如下:

1120161719王某某
……

代码:

fi = open("candidate0.txt",'r')
lines = fi.readlines()
fi.close()

D = []
fo = open('candidate.txt','w')
for line in lines:
    D = line.split()
    for i in range(2,12):
        if int(D[i]) < 60:
            break
    else:
        fo.write('{}{}\n'.format(D[0],D[1]))
fo.close() 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan12319

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值