赞
踩
目录
1.考生文件夹下存在一个文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:键盘输入正整数n,按要求把输
出到屏幕,格式要求:宽度为25个字符,等号字符(=)填充,右对齐,带千位分隔符。如果输入正整数超过25位,则按照真实长度输
出。
例如:键盘输入正整数n为1234,屏幕输出====================1,234
#请完善如下代码
#在______填入语句
s=input()
print("{_____}".format(_____))
参考答案
- s=input()
- print("{:=>25,}".format(eval(s)))
解析
这题主要考察format()这个函数和eval()
格式控制标记包括: <填充> <对齐> <宽度><, ><.精度><类型>等六个字段,这些字段都是可选的, 可以组合使用。填充常跟对齐一 起使用,^、<、>分别是居中、左对齐、右对齐,后面带宽度, :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。
2.获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数,请完善PY102.py中代码。
#请完善如下代码
#在______填入语句
s=input()
print(_______(1)_________)
print(_______(2)_________)
参考答案
- s=input()
- print(s[::-1],end='')
- print(len(s))
解析
s=input()
- 这一行代码从用户那里获取输入的字符串,并将其存储在变量s
中。
print(s[::-1])
- 这一行代码打印出s
的反转。字符串可以使用切片操作符[start:stop:step]
进行切片,其中start
是起始索引,stop
是结束索引,step
是步长。在这个例子中,我们将start
和stop
都留空,表示从字符串的开头到结尾,step
为-1
,表示从右到左反转字符串。
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)
参考答案
- a, b, c = [int(x) for x in input().split(',')]
- ls = []
- for i in range(c):
- ls.append(a+(i*b))
- 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)
参考答案
- import turtle
- turtle.pensize(2)
- d=0
- for i in range(1,13):
- turtle.fd(40)
- d += 30
- turtle.seth(d)
解析
import turtle
turtle.pensize(2)
d=0
turtle.fd(40)
b. 将角度变量d增加30度:d += 30
c. 将画笔的方向设置为当前角度变量d的值:turtle.seth(d)
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)
参考答案
- 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)
解析
这段代码首先定义了两个列表ls
和lt
,分别包含了一些整数。
然后通过循环遍历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) #按学生总成绩从大到小排序
... #此处可多行
参考答案
- L=[]
- fo = open("score.txt", "r")
- fi = open("candidate0.txt", "w")
- lines = fo.readlines()
- for line in lines:
- line = line.strip()
- student = line.split(' ')
- sum = 0
- for i in range(1,11):
- sum += int(student[-i])
- student.append(str(sum))
- L.append(student)
- L.sort(key=lambda x:x[-1],reverse=True)
- for i in range(10):
- fi.write(' '.join(L[i][:-1]) + '\n')
- fo.close()
- fi.close()
解析
定义一个空列表 L。
打开名为 "score.txt" 的文件,并将其读入到一个列表 lines 中。
对于 lines 列表中的每一行,进行如下操作:
a. 删除行末的换行符,得到一个去掉换行符的字符串 line。
b. 将 line 字符串按照空格进行分割,得到一个包含学生信息的列表 student。
c. 定义一个变量 sum 并初始化为 0,然后对学生的最后十门课程的成绩进行累加,将结果赋值给 sum。
d. 将 sum 转换为字符串,并将其添加到 student 列表中作为最后一个元素。
e. 将 student 列表添加到列表 L 中。
对列表 L 进行排序,排序的关键字为每个学生的最后一个元素(即总分数),排序顺序为从大到小。
打开名为 "candidate0.txt" 的文件,将排名前十的学生信息写入文件中,每行信息以空格分隔。
关闭文件 "score.txt" 和 "candidate0.txt"。
需要注意的是,这段代码中使用了一些 Python 的高级特性,例如 lambda 表达式、列表推导式和列表排序函数 sort(),如果对这些概念不熟悉的话,可能需要先学习一下相关知识
6.2读取文件candidate(0.txt,从中选出候选人,并将学号和姓名写入文件candidate.txt,格式如下:
电
1010112161722张三
1010112161728李四
......
'''
输入文件 : candidate0.txt
输出文件 : candidate.txt
'''
参考答案
- fo = open("candidate0.txt", "r")
- fi = open("candidate.txt", "w")
- L = [] # 存储候选人
- lines = fo.readlines()
- for line in lines:
- line = line.strip()
- student = line.split(' ')
- for i in student[-10:]:
- if int(i) < 60:
- break
- else:
- L.append(student[:2])
- for i in L:
- fi.write(' '.join(i) + '\n')
- fo.close()
- fi.close()
解析
打开名为 "candidate0.txt" 的文件,并将其读入到一个列表 lines 中。
定义一个空列表 L,用于存储筛选出来的学生信息。
对于 lines 列表中的每一行,进行如下操作:
a. 删除行末的换行符,得到一个去掉换行符的字符串 line。
b. 将 line 字符串按照空格进行分割,得到一个包含学生信息的列表 student。
c. 对学生信息列表中的最后十门课程的成绩进行遍历,如果有成绩低于 60 分,则跳出循环;否则,将学生的姓名和学号信息添加到 L 列表中。
遍历列表 L 中的每个学生信息,将学生的姓名和学号信息以空格分隔的形式写入名为 "candidate.txt" 的文件中。
关闭文件 "candidate0.txt" 和 "candidate.txt"。
需要注意的是,在步骤 3.c 中使用了 Python 的循环语句 for 和循环控制语句 break 和 else。具体地,当循环中没有执行 break 语句时,就会执行 else 语句块中的代码,因此只有当学生的最后十门课程的成绩均不低于 60 分时,才会将其添加到 L 列表中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。