序列的概念与使用-课后作业
一、单项选择题
1、关于Python组合数据类型,以下描述错误的是:
- A 组合数据类型能够将多个相同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
- B 组合数据类型可以分为3类:序列类型、集合类型和映射类型
- C Python的字符串、元组和列表类型都属于序列类型
- D 序列类型是二维元素向量,元素之间存在先后关系,通过序号访问
【答案】D
【解析】暂无解析
2、关于Python的元组类型,以下选项错误的是:
- A 元组一旦创建就不能被修改
- B 元组采用逗号和圆括号(可选)来表示
- C 元组中元素必须是相同类型
- D 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
【答案】C
【解析】暂无解析
3、以下不是Python序列类型的是:
- A 字符串类型
- B 列表类型
- C 数组类型
- D 元组类型
【答案】C
【解析】暂无解析
4、序列s,哪个选项对s.index(x)的描述是正确的?
- A 返回序列s中元素x第一次出现的序号
- B 返回序列s中序号为x的元素
- C 返回序列s中元素x所有出现位置的序号
- D 返回序列s中x的长度
【答案】A
【解析】暂无解析
5、列表ls,哪个选项对ls.append(x)的描述是正确的?
- A 替换列表ls最后一个元素为x
- B 向ls中增加元素,如果x是一个列表,则可以同时增加多个元素
- C 只能向列表ls最后增加一个元素x
- D 向列表ls最前面增加一个元素x
【答案】C
【解析】暂无解析
二、程序设计题
1、分配学号
类型:列表元组
描述
文件“schoolCode.csv”和“MajorCode.csv”中的数据是每个学院的编号和专业的编号,“studentList.csv”文件中有若干学生信息,学生出现的顺序是他在班级中排名顺序,每行中的数据用逗号分隔,各数据依顺代表:
学生姓名,学生性别,学院,专业名称,行政班(专业加班级号,例如经济1901),入学年级。
假如本科的学生层次编号为012,请为“studentList.csv”中的数据增加学号,学号创建规则是:
学生层次+入学年份后两位+学院代码+专业代码+班级号+班中排名。
例如:012171985170110 表示本科生、2017年入学、文法学院、 编辑出版专业、1701班、排名为10的同学
输入格式说明
第一行输入学生姓名
第二行输入班级
输出格式说明
第一行输出该学生的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
其后分行输出该班级所有同学的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
示例 1
输入:
段宁
金融gj1701
输出:
012142172140101 段宁 女 国际学院 金融 金融gj1401 2014
012172172170101 罗愚 女 国际学院 金融 金融gj1701 2017
012172172170102 卢佳 女 国际学院 金融 金融gj1701 2017
012172172170103 张郁 女 国际学院 金融 金融gj1701 2017
代码:
# -*- coding = utf-8 -*-
# @Author:为一道彩虹
####### BEGIN HELPER FUNCTIONS ####################
# read_file()函数帮助你读取文件到列表,直接调用就可以,此段不需修改
def read_file(filename):
"""接收一个文件名为参数,数据类型为字符串类型,文件编码为utf-8,
返回值为列表,列表元素为将文件每一行根据逗号切分成的列表"""
with open(filename, 'r', encoding='utf-8') as file:
file_to_list = [line.strip().split(',') for line in file]
# 文件全部内容读取出来放入列表中,每个元素为一行字符串
return file_to_list # 以列表形式返回文件中的数据
####### END HELPER FUNCTIONS ####################
def student_id(ls_student, ls_school, ls_major):
"""参数为三个文件对象,依序分别由读学生信息、学院信息和专业信息文件获得。返回值为列表,为包含了新生成的学号的学生信息列表。"""
student_detail = []
# =============================== #
# 此处按文档注释要求补充你的代码
ID = 1
dic = {
}
for item in ls_student:
s = '012'
s += item[-1][-2:]
dic[item[-2]] = dic.get(item[-2], 0) + 1
for i in ls_school:
if item[2] == i[0]:
s += i[1]
break
for i in ls_major:
if item[3] == i[0]:
s += i[1]
break
s += item[4][-4:]
if dic[item[-2]] < 10:
s += '0'
s += str(dic[item[-2]])
ls = [s]
for i in item:
ls.append(i)
student_detail.append(ls)
# =============================== #
return student_detail # 返回加了学号的学生信息列表
def student_info(stu_name, ls_student):
"""参数为学生名字字符串和学生的信息列表,返回值为该学生的详细信息"""
# =============================== #
# 此处按文档注释要求补充你的代码
for item in ls_student:
if stu_name == item[1]:
return item
# =============================== #
def classmate(stu_class, ls_student):
"""参数为学生班级和学生信息列表,返回值为同班同学的信息列表"""
# =============================== #
# 此处按文档注释要求补充你的代码
mate_ls = []
for item in ls_student:
if stu_class == item[-2]:
mate_ls.append(item)
# =============================== #
return mate_ls
if __name__ == '__main__':
stuName = input() # 输入学生姓名
stuClass = input() # 输入班级
student_list = read_file('studentList.csv')[1:] # 获得学生信息列表
school_code = read_file('schoolCode.csv') # 获得学院信息列表
major_code = read_file('MajorCode.csv') # 获得专业信息列表
studentDetail = student_id(student_list, school_code, major_code) # 调用函数计算ID并插入到列表中
print(*student_info(stuName, studentDetail