简单应用最后一问答案(python历年真题)

这段内容涉及多个数据处理场景,包括选举、统计和排序。主要任务有:筛选村长选举的有效和无效票,找出得票最多的村民;对高校分类、学生就业、年龄统计、获取输入、小明考试、明星投票等场景进行数据统计和排序;计算向量的点乘;在字符查找中实现特定字符的查找;以及一维列表的处理和全国大学排名的统计。整个过程展示了对字典、列表、文件操作和条件判断的运用。
摘要由CSDN通过智能技术生成

村长选举

'''
#L2-007-村长选举
#使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权的村民,名单在附件name.txt中,从这40名村民中选出一人当村长,40人的投票信息由附
#件vote.txt中给出,每行是一张选票的信息,有效票中得票最多的村民当选。
#问题一:请从vote.txt 中筛选出无效票写入文件vote1.txt 。有效票的含义是:选票中只有一个名字且该名字在name.txt文件列表中,不是有效票的票称之为无效
#票。
'''
f = open("name.txt", encoding="utf-8")
names = f.readlines()
f.close()
f = open("vote.txt", encoding="utf-8")
votes = f.readlines()
f.close()
D = {}
NUM = 0
print(votes)
for vote in votes:
    num = len(vote.split())  # 分解成列表,并求列表长度(元素个数)
    if num == 1 and vote in names:  # 仅一个且在姓名中,有效
        D[vote[:-1]] = D.get(vote[:-1], 0) + 1
        NUM += 1
    else:
        with open("vote1.txt", "a+", encoding="utf-8") as fi:
            fi.write("{}".format(vote))  # 如果无效,保存到vote1文件内
'''
#L2-007-村长选举
#使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权的村民,名单在附件name.txt中,从这40名村民中选出一人当村长,40人的投票信息由附
#件vote.txt中给出,每行是一张选票的信息,有效票中得票最多的村民当选。
#问题一:请从vote.txt 中筛选出无效票写入文件vote1.txt 。有效票的含义是:选票中只有一个名字且该名字在name.txt文件列表中,不是有效票的票称之为无效
#票。
#问题二:给出当选村长的名字及其得票数。
#'''

f = open("name.txt", encoding="utf-8")
names = f.readlines()
f.close()
f = open("vote.txt", encoding="utf-8")
votes = f.readlines()
f.close()
D = {}
NUM = 0
for vote in votes:
    num = len(vote.split())  # 分解成列表,并求列表长度(元素个数)
    if num == 1 and vote in names:  # 仅一个且在姓名中,有效
        D[vote[:-1]] = D.get(vote[:-1], 0)+1
        NUM += 1

l = list(D.items())
l.sort(key=lambda s: s[1], reverse=True)
name = l[0][0]
score = l[0][1]
print("有效票数为:{} 当选村民为:{},票数为:{}".format(NUM, name, score))

高校分类

txt = input("请输入类型序列:")
t = txt.split()
d = {}
for c in range(len(t)):
    d[t[c]] = d.get(t[c], 0)+1
    ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
for k in ls:
    print("{}:{}".format(k[0], k[1]))

学生就业

names = input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
t = names.split()
d = {}
for c in range(len(t)):
    d[t[c]]= d.get(t[c],0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in range(len(ls)):
    zy,num = ls[k]
    print("{}:{}".format(zy,num))

年龄统计

data = input()  # 输入“姓名 年龄 性别”
s = 0
n = 0
i = 0
while data:
    i = i+1
    ls = data.split()
    s = s+int(ls[1])
    if ls[2] == '男':
        n = n+1
    data = input()
s = s/i

print("平均年龄是{:.2f} 男性人数是{}".format(s, n)) 

获取输入

while True:
    s = input("请输入不带数字的文本:")
    i = 0
    for p in s:
        if "0" <= p <= "9":
            i = i+1
    if i == 0:
        break
print(len(s))

小明考试

data = input()
d = {}
while data:
    t = data.split()
    d[t[0]] = int(t[1])
    data = input()

ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
s1, g1 = ls[0]
s2, g2 = ls[len(ls) - 1]

sum = 0
for i in d.values():
    sum = sum + int(i)
    
avg = sum/len(ls)

print("最高分课程是{}{}, 最低分课程是{}{}, 平均分是{:.2f}".format(s1, g1, s2, g2, avg))

明星投票

data = input()
d = {}
while data:
    t = data.split()
    d[t[0]] = int(t[1])
    data = input()

ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
s1, g1 = ls[0]
s2, g2 = ls[len(ls) - 1]

sum = 0
for i in d.values():
    sum = sum + int(i)
    
avg = sum/len(ls)

print("最高分课程是{}{}, 最低分课程是{}{}, 平均分是{:.2f}".format(s1, g1, s2, g2, avg))
f = open("vote.txt",encoding="utf-8")
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))

计算向量

ls = [111, 222, 333, 444, 555, 666, 777, 888, 999]
lt = [999, 777, 555, 333, 111, 888, 666, 444, 222]
s = 0
for i in range(len(ls)):
    s+=ls[i]*lt[i]
print(s)

字符查找

import random
random.seed(2)

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

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

一维列表

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  # 有多个和,所以每次赋初始值0
    for j in range(3):  # 求3次累计和
        k += filter[j] * img[i + j]  # 求3次累计和
        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('{:.3f}'.format(r), end=' ')

全国大学排名

f = open('data.txt', 'r')  # 读取文本
unis = {"美国": [], "英国": [], "瑞士": [], "新加坡": [], "中国": []}  # 创建字典
for line in f:  # 遍历文本
    if line == "\n":  # 如果文本是空行就跳过
        continue
    else:
        text = line.split(",")  # 用逗号分割文本
        text[2] = text[2].replace("\n", "")  # 替换国家文本尾部换行符号
        unis[text[2]].append(text[1])  # 将学校名称添加到字典值的列表中
f.close()
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d, len(unis[d]), ",".join(unis[d])))  # 遍历字典,格式化输出内容

操作时间问题

sumtime = 0
percls = []
ts = {}
with open('out.txt', 'r') as f:
    for line in f:
        percls.append(line.strip('\n').split(","))

n=[x[1] for x in percls]
for i in range(len(n)):
    sumtime+=eval(n[i])

ts={x[0]:x[2] for x in percls}

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]))
二级Python历年真题是指二级计算机技术与软件应用考试中有关Python语言的考题。这些题目旨在检测考生对于Python语法和应用的掌握程度。 二级Python历年真题主要包括以下内容: 1. Python基础知识:题目可能涉及到Python的基本语法、数据类、运算符、控制语句等方面的知识。考生需要对这些基础知识有清晰的理解和掌握。 2. 函数和模块:考题可能会要求考生定义函数,实现一些特定的功能。此外,还可能涉及到模块的导入和使用,考生需要熟悉Python标准库中的一些常用模块。 3. 文件操作:题目可能会要求考生对文件进行读写操作。考生需要了解文件的打开、读取、写入以及关闭等基本操作。 4. 异常处理:题目可能会给出一些可能出错的代码片段,并要求考生对其进行异常处理。考生需要熟悉Python的异常处理机制,能够通过适当的方式处理可能出现的异常。 5. 数据结构和算法:考题可能涉及到Python中的常见数据结构,如列表字典等的使用。此外,还可能要求考生使用适当的算法解决一些问题。 参加考试前,考生可以通过复习历年真题来了解考试的题目类和难度。通过做真题,考生可以巩固基础知识,熟悉常用的Python语法和库函数的使用。在解答问题时,建议考生要仔细阅读题目,理清思路,合理利用已掌握的知识和技巧解决问题。 总之,通过做二级Python历年真题可以提高考生解决实际问题的能力,对考试也有一定的帮助。希望考生认真准备,取得好成绩!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

终是蝶衣梦晓楼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值