当前位置:   article > 正文

【2】python二级——操作题_python计算机二级大学操作题

python计算机二级大学操作题

目录

基本操作

题目一

题目二

题目三

简单应用

题目四

题目五

题目六

问题一

问题二


基本操作

题目一

1.考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:键盘输入正整数n,按要求把输
出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输
出。
例如:键盘输入正整数n为1234,屏幕输出====================1,234

#请完善如下代码
#在______填入语句
s=input()
print("{_____}".format(_____))

参考答案

  1. s=input()
  2. print("{:=>25,}".format(eval(s)))

解析

这题主要考察format()这个函数和eval()

格式控制标记包括: <填充> <对齐> <宽度><, ><.精度><类型>等六个字段,这些字段都是可选的, 可以组合使用。填充常跟对齐一 起使用,^、<、>分别是居中、左对齐、右对齐,后面带宽度, :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。

题目二

2.获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数,请完善PY102.py中代码。

#请完善如下代码
#在______填入语句
s=input()
print(_______(1)_________)
print(_______(2)_________)

参考答案

  1. s=input()
  2. print(s[::-1],end='')
  3. print(len(s))

解析

  1. s=input() - 这一行代码从用户那里获取输入的字符串,并将其存储在变量s中。

  2. print(s[::-1]) - 这一行代码打印出s的反转。字符串可以使用切片操作符[start:stop:step]进行切片,其中start是起始索引,stop是结束索引,step是步长。在这个例子中,我们将startstop都留空,表示从字符串的开头到结尾,step-1,表示从右到左反转字符串。

  3. print(len(s)) - 这一行代码打印出s的长度。len()函数用于获取字符串的长度,即它包含的字符数。

题目三

3.获得用户输入的以逗号分隔的三个数字,记为a、b、c,以为起始数值,b为差,c为数值的数量,

请完善PY103.py中代码

#请完善如下代码
#在______填入语句
a, b, c = _______(1)_________
ls = []
for i in range(c):
    ls._______(2)_________
print(ls)

参考答案

  1. a, b, c = [int(x) for x in input().split(',')]
  2. ls = []
  3. for i in range(c):
  4. ls.append(a+(i*b))
  5. print(ls)

解析

根据题目要求和给出的提示代码,用户输入的是以逗号分隔的三个数字,则需要先用splt0方法将字符串分隔形成列表,再用for循环遍历该列表将字符串类型转换成数字类型
向列表中增加元素用append()方法。本题输出的是以a为起始数值,b为差的等差递增数列,c为数列中数值的数量,则for i in range(c)中i的值是从0到c-1的整数。那么数列中第i个数为a+(i*b)

简单应用

题目四

使用turtle库的turtle.fd0函数和turtle..seth0函数绘制一个边长为40像素的正12边形,在考生文件夹下给出了程序框架文件PY201py,在横线处补充代码,不得修改其他代码。效果如下图所示。

#请在空格处补充代码
import turtle
turtle.pensize(2)
d=0
for i in range(1, _______(1)_________):
    _______(2)_________
    d += _______(3)_________
    turtle.seth(d)

参考答案

  1. import turtle
  2. turtle.pensize(2)
  3. d=0
  4. for i in range(1,13):
  5. turtle.fd(40)
  6. d += 30
  7. turtle.seth(d)

解析

  1. 导入turtle库:import turtle
  2. 设置画笔粗细为2:turtle.pensize(2)
  3. 初始化一个角度变量d为0:d=0
  4. 循环12次,每次执行以下操作: a. 向前移动40像素:turtle.fd(40) b. 将角度变量d增加30度:d += 30  c. 将画笔的方向设置为当前角度变量d的值:turtle.seth(d)
  5. 循环结束后,完成了正12边形的绘制。

题目五

5.计算两个列表s和t对应元素乘积的和(即向量积),补充PY202.py文件。
1s=[111,222,333,444,555,666,777,888,999]
It=[999,777,555,333,111,888,666,444,222]

#请补充若干行代码,完成向量积运算
ls = [111, 222, 333, 444, 555, 666, 777, 888, 999]
lt = [999, 777, 555, 333, 111, 888, 666, 444, 222]
s = 0
________________
________________
print(s)

参考答案

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

解析

这段代码首先定义了两个列表lslt,分别包含了一些整数。

然后通过循环遍历ls列表,使用range()函数和len()函数获取ls列表的长度,循环次数为列表长度。在循环体中,使用+=操作符将s变量加上ls[i] * lt[i]的值,其中i为当前循环次数,表示获取到的当前元素在列表中的下标。

最后,将累加结果输出到屏幕上,即完成了计算两个列表对应元素的乘积之和的操作。

题目六

6.某班学生评选一等奖学金,学生的10门主干课成绩存在考生文件夹下文件sc0r.txt中,每行为一个学生的信息,分别记录了学
生学号、姓名以及10门课成绩,格式如下:

1820161043郑珉搞68 66 83 77 56 73 61 69 66 78
1820161044沈红伟91 70 81 91 96 80 78 91 89 94
.....
从这些学生中选出奖学金候选人,条件是:①总成绩排名在前10名;②全部课程及格(成绩大于等于60)。

问题一

6.1给出按总成绩从高到低排序的前10名学生名单,并写入文件candidate0.txt,每行记录一个学生的信息,分别为学生学号、姓名以及10门课成绩。补充考生文件夹下文件PY301-1.py,完成这一功能。

# 请在...处使用多行代码替换
#
# 注意:其他已给出代码仅作为提示,可以修改
L=[]                          #L中的元素是学生原始成绩和总成绩
...  #此处可多行
L.sort(key=lambda x:x[-1],reverse=True)   #按学生总成绩从大到小排序
...  #此处可多行

参考答案

  1. L=[]
  2. fo = open("score.txt", "r")
  3. fi = open("candidate0.txt", "w")
  4. lines = fo.readlines()
  5. for line in lines:
  6. line = line.strip()
  7. student = line.split(' ')
  8. sum = 0
  9. for i in range(1,11):
  10. sum += int(student[-i])
  11. student.append(str(sum))
  12. L.append(student)
  13. L.sort(key=lambda x:x[-1],reverse=True)
  14. for i in range(10):
  15. fi.write(' '.join(L[i][:-1]) + '\n')
  16. fo.close()
  17. fi.close()

解析

  1. 定义一个空列表 L。

  2. 打开名为 "score.txt" 的文件,并将其读入到一个列表 lines 中。

  3. 对于 lines 列表中的每一行,进行如下操作:

    a. 删除行末的换行符,得到一个去掉换行符的字符串 line。

    b. 将 line 字符串按照空格进行分割,得到一个包含学生信息的列表 student。

    c. 定义一个变量 sum 并初始化为 0,然后对学生的最后十门课程的成绩进行累加,将结果赋值给 sum。

    d. 将 sum 转换为字符串,并将其添加到 student 列表中作为最后一个元素。

    e. 将 student 列表添加到列表 L 中。

  4. 对列表 L 进行排序,排序的关键字为每个学生的最后一个元素(即总分数),排序顺序为从大到小。

  5. 打开名为 "candidate0.txt" 的文件,将排名前十的学生信息写入文件中,每行信息以空格分隔。

  6. 关闭文件 "score.txt" 和 "candidate0.txt"。

需要注意的是,这段代码中使用了一些 Python 的高级特性,例如 lambda 表达式、列表推导式和列表排序函数 sort(),如果对这些概念不熟悉的话,可能需要先学习一下相关知识

问题二

6.2读取文件candidate(0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt,格式如下:

1010112161722张三
1010112161728李四
......

'''
输入文件 : candidate0.txt
输出文件 : candidate.txt
'''

参考答案

  1. fo = open("candidate0.txt", "r")
  2. fi = open("candidate.txt", "w")
  3. L = [] # 存储候选人
  4. lines = fo.readlines()
  5. for line in lines:
  6. line = line.strip()
  7. student = line.split(' ')
  8. for i in student[-10:]:
  9. if int(i) < 60:
  10. break
  11. else:
  12. L.append(student[:2])
  13. for i in L:
  14. fi.write(' '.join(i) + '\n')
  15. fo.close()
  16. fi.close()

解析

  1. 打开名为 "candidate0.txt" 的文件,并将其读入到一个列表 lines 中。

  2. 定义一个空列表 L,用于存储筛选出来的学生信息。

  3. 对于 lines 列表中的每一行,进行如下操作:

    a. 删除行末的换行符,得到一个去掉换行符的字符串 line。

    b. 将 line 字符串按照空格进行分割,得到一个包含学生信息的列表 student。

    c. 对学生信息列表中的最后十门课程的成绩进行遍历,如果有成绩低于 60 分,则跳出循环;否则,将学生的姓名和学号信息添加到 L 列表中。

  4. 遍历列表 L 中的每个学生信息,将学生的姓名和学号信息以空格分隔的形式写入名为 "candidate.txt" 的文件中。

  5. 关闭文件 "candidate0.txt" 和 "candidate.txt"。

需要注意的是,在步骤 3.c 中使用了 Python 的循环语句 for 和循环控制语句 break 和 else。具体地,当循环中没有执行 break 语句时,就会执行 else 语句块中的代码,因此只有当学生的最后十门课程的成绩均不低于 60 分时,才会将其添加到 L 列表中。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/167094
推荐阅读
相关标签
  

闽ICP备14008679号