python二级操作题与分析(9)
发布日期:2022-02-01 03:01:55 浏览次数:14 分类:技术文章

本文共 5162 字,大约阅读时间需要 17 分钟。

1.101

参照代码模板完善代码,实现下述功能。从键盘输入一个整数和一个字符,以逗号隔开,在屏幕上显示输出一条信息。

示例如下:
输入
10,@
输出
@@@@@@@@@@ 10 @@@@@@@@@@

输入输出示例

输入 输出
示例 1 10,@ @@@@@@@@@@ 10 @@@@@@@@@@
习题讲解

答案:a,x = input().split(',') # 请输入1个整数和1个符号,逗号隔开print(x*eval(a),a,x*eval(a))

要点:

  1. 输入两个值组成的字符串,要用split()分割开
    2.同时赋值给两个变量
    3.利用eval得到数值做运算,给字符做乘法,得到需要的格式
    2.102

参照代码模板完善代码,实现下述功能。从键盘输入一个由 1 和 0 组成的二进制字符串 s,转换为八进制数输出显示在屏幕上,示例如下:

输入:
1100
输出:
转换成八进制数是:14

输入输出示例

输入 输出
示例 1 1100 14
习题讲解

答案:s = input() # 请输入一个由1和0组成的二进制数字串d = 0while s:    d = d*2 + (ord(s[0]) -ord('0'))s = s[1:]print("转换成八进制数是:{:o}".format(d))

要点:

1.print和format的格式用法,字符串的内置处理函数,切片
2.理解数据类型及其转换
3.103

参照代码模板完善代码,实现下述功能。文件 data.txt 文件中有多行数据,打开文件,读取数据,并将其转化为列表。统计读取的数据,计算每一行的总和、平均值,在屏幕上输出结果。

文件内容示例如下:
Chinese: 80,Math:85,English:92, Physical: 81,Art:85,Chemical:88
屏幕输出结果示例如下:
总和是:511.0,平均值是:85.17

输入输出示例

输入 输出
示例 1 从文件 data.txt 中读取 总和是:511.0,平均值是:85.17
习题讲解

答案:fi = open("data.txt", 'r')for l in fi:    l = l.split(',')    s = 0.0    n = len(l)    for cours in l:        items  = cours.split(':')        s += eval(items[1])    print("总和是:{},平均值是:{:.2f}".format(s,s/n))fi.close()

4.201

参照代码模板完善代码,实现下述功能,不得修改其它代码。使用 turtle 库的 turtle.circle() 函数和 turtle.seth() 函数绘制同心圆套圈,最小的圆圈半径为 10 像素,不同圆圈之间的半径差是 40 像素,效果如下图所示。


自动评阅说明

使用字符串形式输出 ,,____③____中应填代码即可以自动评阅得分

例如,如果代码为:

代码模板 | # 你的代码import turtle | import turtle

d = 0 | d = 0for i in range(1): | for i in range(1):

turtle.fd(2) | turtle.fd(100)
turtle.3 | turtle.fd(100 + (i * 3))
turtle.seth(d) | turtle.seth(d)
则在提交代码页面输入:
print(‘1’, ‘100’, ‘fd(100 + (i * 3))’)
提交后即可以查看得分

注:如果有运算符,请在运算符两侧加上空格

习题讲解
答案:

# 请在______处填写一行代码# 请不要修改其他代码import turtler = 10dr = 40head = 90for i  in range (4):    turtle.pendown()    turtle.circle(r)    r +=  dr    turtle.penup()    turtle.seth(-head)    turtle.fd(dr)    turtle.seth(0)turtle.done()

要点:

  1. 同心圆主要问题是要挪动画笔,用到 pendown 和 penup
  2. 用循环来处理重画的个数
    5.202

参照代码模板完善代码,实现下述功能。从键盘输入一个中文字符串变量 s,内部包含中文标点符号。

问题1:(8分)用 jieba 分词,计算字符串 s 中的中文词汇个数,不包括中文标点符号。显示输出分词后的结果,用”/ ”分隔,以及中文词汇个数。示例如下:

输入:
工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
输出:
工业/ 互联网/实施/ 的/ 方式/是/ 通过/ 通信/控制/ 和/ 计算技术/的/ 交叉/ 应用/建造/ 一个/ 信息/物理/ 系统/ 促进/物理/ 系统/ 和/数字/ 系统/ 的/融合/
中文词语数是:27

问题2:(7分)在问题1的基础上,统计分词后的词汇出现的次数,用字典结构保存。显示输出每个词汇出现的次数,以及出现次数最多的词汇。如果有多个词汇出现次数一样多,都要显示出来。示例如下:

继续输出:
控制: 1
物理: 2
通信: 1
交叉: 1
互联网: 1
和: 2
是: 1
计算技术: 1
一个: 1
的: 3
数字: 1
促进: 1
信息: 1
方式: 1
建造: 1
应用: 1
系统: 3
通过: 1
实施: 1
融合: 1
工业: 1
出现最多的词是(的 系统):3 次

输入输出示例

输入 输出
问题 1 “工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。 中文词语数是:27
问题2 控制: 1
物理: 2
通信: 1
交叉: 1
互联网: 1
和: 2
是: 1
计算技术: 1
一个: 1
的: 3
数字: 1
促进: 1
信息: 1
方式: 1
建造: 1
应用: 1
系统: 3
通过: 1
实施: 1
融合: 1
工业: 1
出现最多的词是(的 系统):3 次
习题讲解
答案:

#请在.....处填写多行表达式或语句#可以修改其他代码import jieba# s = '“工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。's = input("请输入一个中文字符串,包含逗号和句号:")s = s.replace(',','').replace('。','').replace('、','').replace('“','').replace('”','')k=jieba.lcut(s)d1 = {}maxc = 0wo = ''for i in k:   print(i, end= "/ ")   d1[i] = d1.get(i,0) + 1print("\n中文词语数是:{}".format(len(k)))for key in d1:    if maxc < d1[key]:        wo = key        maxc = d1[key]elif maxc == d1[key]:        wo += ' ' + key    print("{}: {}".format(key,d1[key]))print("出现最多的词是({}):{} 次".format(wo, maxc))

要点:

  1. 用 jieba 分词处理词汇统计
  2. 要处理掉输入的各种标点符号,用到replace()
  3. 用字典保存各个词出现次数
  4. 要遍历字典的键值对,找到最大的值,及其对应的键
    6.301

一个人脸识别研究小组对若干名学生做了人脸识别的测试,将测试结果与被测试者的现场照片组合成文件名,写到了一个文件 dir_100.txt 中,每行是一个文件名的信息,示例如下:

[‘1709020621’, ‘0’]_116.jpg
[‘1709020621’]_115.jpg
[‘1770603107’, ‘1770603105’, ‘0’, ‘0’]_1273.jpg
文件名各部分含义如下:
[‘识别出学号1’,‘ 识别出学号2’,…,‘0表示检测到人脸但未识别出人’]_照片的顺序编号.jpg
测试过程中,一个学生可能被抓拍到多张照片中,所以会在多个文件名中被识别,学号出现在多个文件名中;一张照片中,可能有多个人脸,但有些分辨率不够而识别不出来,文件名位置用‘0’代替学号。
使用字典和列表型变量进行数据分析,最终获取实际参加测试的学生人数和人均被测次数。
(1)读入 dir_300.txt 文件的内容,处理每一行文件名信息。将文件名中的学号内容以列表形式保存,丢掉‘0’的字串;照片的顺序编号作为字典的关键字,学号列表作为字典的值。转换后,显示字典中的每行信息,示例如下:
116:1709020621
115:1709020621
117:1709020621
1273: 1770603107,1770603105

(2)将该字典中的学号提取出来,构造另一个字典,以学号作为字典的关键字,累计学号出现的次数,将累计值作为字典的值。格式示例如下:

1709020621:3
1770603107:1
1770603105:1
(3)累计字典中关键字的个数,即为实际参加测试的学生人数;累加每个关键字对应的值,即为所有学号测试次数;与实际测试人数之比,即为人均被测次数。将实际参加测试人数和人均被测次数显示输出在屏幕上,示例如下:
实际参加测试的人数是:1024
人均被测次数是:2.7

输入输出示例

输入 输出
问题 1 从文件dir_50.txt读入 实际参加测试的人数是:1024
人均被测次数是:2.7

自动评阅提示:输出最终结果即可,中间结果不需要输出

习题讲解

答案:#P301-1.py#请在.....处填写多行表达式或语句#可以修改其他代码picd = {}numd = {}fi = open("dir_50.txt",'r')for l in fi:    l=l.replace('\n','').split('_')##    print(l[1])    if l[0] != '' :        lkey,lvalue = l[1][:-4],eval(l[0])        lval = []        for v in lvalue:            if v != '0':                lval.append(v)        if lval:            lv= ','.join(lval)            print("{}:{}".format( lkey,lv))            picd[lkey] = lvfi.close()idd = {}for key in picd:    ids = picd[key].split(',')    for num in ids:        idd[num] = idd.get(num,0) +1            #print(num,idd[num])s = 0for key in idd:    s += int(idd[key])    # print("{}:{}".format(key, idd[key]))count = len(idd)print("实际参加测试的人数是:",count)print("人均被测次数是:{:.1f}".format(s/count))

要点:

  1. 这是一个实际问题,解决问题的方法有实际的推广意义。问题的关键是要完成数据提取,然后才是分析统计
  2. 文件的读写,打开关闭是基础
  3. 读入文件要进行字符串的处理,按行,分割成列表
  4. 数据提取:先取得文件里的有效内容,转换成列表,利用列表的切片,提取出照片编号和学号,放到字典picd里
  5. 第二步数据分析,需要先从字典里把学号提取出来,为了便于统计每个学号被测的次数,再建一个字典idd
  6. idd字典的键是学号,所以字典的len就是参加测试的人数
  7. 为了计算平均测试次数,需要累计每个学号被测的次数,最后除以参加测试人数就得到结果

转载地址:https://blog.csdn.net/qq_43313588/article/details/88378224 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python二级操作题与分析(8)
下一篇:python二级操作题与分析(10)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月06日 06时04分22秒