python3:(计算机二级练习题) 2023-11-26

1.计算并输出这组人员的平均年龄

键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例格式如下:

张三 男 23

李四 女 21

王五 男 18

计算并输出这组人员的平均年龄(保留2位小数)和其中男性人数,格式如下:

平均年龄是20.67 男性人数是2

data = input()  # 姓名 年龄 性别
renshu=0 #总人数
age_sum=0 #总年龄
man_renshu=0 #总男人数

while data: # 当date为 : 非0或非空时 返回ture进行循环
    renshu+=1
    liebiao=data.split()
    #split() 方法通过指定分隔符对字符串进行切片,
    #该方法将字符串分割成子字符串并返回一个由这些子字符串组成的列表。
    age_sum+=eval(liebiao[2]) #将字符字符串元素(列表第三个元素)转为可执行对象并累加
    if liebiao[1]=="男": #判断性别是否为男
        man_renshu+=1
    data = input()

avg=age_sum/renshu #平均年龄

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

2.对“命运. txt”文件进行字符频次统计

(1.输出频次最高的中文字符(不包含标点符号)及其频次

对“命运. txt”文件进行字符频次统计,输出频次最高的中文字符(不包含标点符号)及其频次,字符与频次之间采用英文冒号”:”分隔,示例格式如下:

f1=open('命运.txt','r') 
#打开文件 命运.txt(只读模式) ,该文件和可执行py位于同一文件夹,同一工作文件夹.读取内容返回给f1对象
txt1=f1.read()  #读取文件

d = {} #初始化字典d
for i in txt1: #遍历txt1对象中的元素,遍历的元素分别赋值给i
    if i not in " ,。、;‘【、=-·】’~!@#¥%……&*()——+|}{}:“”》《》  ? \n  ":
    #排除中文标点符号
        d[i]=d.get(i,0)+1 
        #筛选后的字符及其频次放入字典d中
        #在d.get(i,0)+1中i为需要查找获取的键,0为未检索到时返回的默认设置值,
        #当第一次出现的字符无法被检索到时,则设定其初始默认值为0, 随后加一得到出现次数
        
#print(d) #test
#print(d.items())
#print(list(d.items()))

list1=list(d.items())
#字典 items() 方法以列表返回视图对象,是一个可遍历的key/value 对.
#视图对象 不是列表,不支持索引,可以使用 list() 来转换为列表。

list1.sort(key=lambda x:x[1],reverse=True)
#sort() 函数用于对原列表进行排序,reverse = True表示降序,
#lambda是Python中的一个匿名函数,也就是没有函数名的函数,它可以起到快速定义函数的作用.
#本例中key=lambda x:x[1]表示list1列表某个列表元素(元组)下的第二个元组元素
#print(list1)

print("{}:{}".format(list1[0][0],list1[0][1]))
f1.close()

(2.屏幕输出前10个频次最高的字符

对“命运. txt”文件进行字符频次统计,按照频次由高到低,屏幕输出前10个频次最高的字符,不包含回车符,字符之间无间隔,连续输出

file1=open("命运.txt")
text1=file1.read()


d = {}
for i in text1:
    if i not in "\n" :
        d[i]=d.get(i,0)+1


ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 此行可以按照词频由高到低排序
#print(ls)
#print(ls[0][0],ls[1][0],ls[2][0],ls[3][0],ls[4][0],ls[5][0],ls[6][0],ls[7][0],ls[8][0],ls[9][0])
for k in range(10):
    print(ls[k][0],end="")

(3.将排序后的字符及频次输出到考生文件夹下

对“命运. txt”文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车。将排序后的字符及频次输出到考生文件夹下,文件名为“命运-频次排序. txt”。字符与频次之间采用英文冒号”:”分隔,各字符之间采用英文逗号”,”分隔,参考CSV格式, 最后无逗号,

file1=open("命运.txt","r")
#以只读模式打开 命运.txt 文件,并将该对象返回给 file1

file2=open("命运-频次排序.txt","w")
#以写入模式打开 命运.txt 文件,并将该对象返回给 file2

text1=file1.read()
#读取 文件对象file1 ,并将读取内容返回给text1

d = {}# 字典d 初始化

for i in text1:
    if i not in " \n": #过滤掉空格和回车字符
        d[i]=d.get(i,0)+1 #过滤后的内容放入字典d
        
ls = list(d.items()) #字典d 转为 列表ls,且列表的每个元素都为一个元组
ls.sort(key=lambda x:x[1], reverse=True) #根据列表内元组的第二个元素进行降序排列
#print(ls)

s1="" #初始化s1字符串
for k in ls:
    s1+= "{}:{}".format(k[0],k[1])+ "," #按照指定格式将内容循环写入s1字符串

#print(s1)
file2.write(s1[:-1]) #切割掉字符串最后一个字符,并写入file2文件对象中

file1.close() #关闭file1文件对象
file2.close()

3.某商店出售某品牌运动鞋,

某商店出售某品牌运动鞋,每双定价160,1双不打折,2双(含)到4双(含)打九折,5双(含)到9双(含)打八折,10双(含)以上打七折,键盘输入购买数量,屏幕输出总额(保留整数)。

n = eval(input("请输入数量:"))

if 4>=n>=2 :
    cost=int(n*0.9*160)   
elif 9>=n>=5:
    cost=int(n*0.8*160)   
elif n>=10:
    cost=int(n*0.7*160)
elif n==1:
    cost=int(n*160)   
print("总额为:",cost)

4.统计各行业就业的学生数量,按数量从高到低方式输出

键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善Python代码,统计各行业就业的学生数量,按数量从高到低方式输出。例如输入:

交通 金融 计算机 交通 计算机 计算机

输出参考格式如下,其中冒号为英文冒号:

计算机:3

交通:2

金融:1


names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
list1=names.split()

d = {}
#for i in range(len(list1)):
#    d[list1[i]]=d.get(list1[i],0)+1
for i in list1:
    d[i]=d.get(i,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]))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mklpo147

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

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

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

打赏作者

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

抵扣说明:

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

余额充值