你好,我在写course_to_teacher 卡住了 需要帮助
#example文件
class Student(object):
"""能够描述学生的学号、姓名、已选课程(默认值为空列表)三项信息"""
def __init__(self, stu_num, name, course):
"""
能够描述学生的学号、姓名、已选课程(默认值为空列表)三项信息
:param stu_num: 整型 学号
:param name: 字符串 姓名
:param course: 列表 已选课程
"""
self.stu_num = stu_num
self.name = name
self.course = course
@property
def course_detail(self):
"""以属性的方式返回学生的已选课程信息"""
return self.course
def add_course(self, cour_info):
"""
实现添加课程信息(cour_info)至学生对象的已选课程属性
:param cour_info: 添加课程的属性
:return: 添加课程的已选课程
"""
self.course.append(cour_info)
def __str__(self):
"""返回如效果图所示学生信息表的学生姓名,学生学号"""
return "name:{0}, s_number:{1}".format(self.name, self.stu_num)
class Teacher(object):
"""描述教师编号、教师姓名、手机号码三项信息"""
def __init__(self, teacher_num, name, phone):
"""
描述教师编号、教师姓名、手机号码三项信息
:param teacher_num: 字符串 教师编号
:param name: 字符串 教师名称
:param phone: 整型 手机号码
"""
self.teacher_num = teacher_num
self.name = name
self.phone = phone
def __str__(self):
"""返回教师编号与教师姓名属性"""
print("tea_num:{0}, tea_name:{1}".format(self.teacher_num, self.name))
class Course(object):
"""描述课程编号、课程名称、授课教师(teacher默认值为None)"""
def __init__(self, cour_num, cour_name, cour_teacher=None):
"""
描述课程编号、课程名称、授课教师(teacher默认值为None)
:param cour_num: 整型 课程编号
:param cour_name: 字符串 课程名称
# :param cour_teacher: 字符串 授课教师
"""
self.cour_num = cour_num
self.cour_name = cour_name
self.cour_teacher = cour_teacher
# @property
def binding(self, teacher):
"""
实现课程绑定授课教师功能,这里的teacher传入的是教师类的实例,在file_exe.py中会体现到
:param teacher: 列表 教师编号、名称、手机号码
:return: 如果存在,将该实例赋值给课程类的授课教师属性,并将课程名称和教师名称包装成字典进行返回;如果不存在教师类的实例,返回空
"""
if teacher is not None:
self.cour_teacher = teacher
cour_dict = {'课程名称': self.cour_name, '教师名称': self.cour_teacher}
return cour_dict
else:
return None下面一个是file_exe文件
from example import Student, Course, Teacher
# import example
"""从example.py文件中导入学生类,教师类,课程类"""
def introduction(title_str):
"""
标题介绍
:param title_str: 字符串 接收标题名字
:return: 标题的样式
"""
asterisk = "************"
return "{0}{1}{0}".format(asterisk, title_str)
def prepare_course():
"""
创建课程信息初始化
:return: 返回追加的列表
"""
course_detail = {
"01": "网络爬虫",
"02": "数据分析",
"03": "人工智能",
"04": "机器学习",
"05": "云计算",
"06": "大数据",
"07": "图像识别",
"08": "Web开发"
}
course_list = []
for num, name in course_detail.items():
# print(num + "...." + name)
course = Course(num, name)
course_list.append(course)
return course_list
def create_teacher():
"""创建教师信息初始化,并以列表形式返回所创建的8名教师对象"""
teacher_list = []
teacher_detail = [
["T1", "张亮", "13301122001"],
["T2", "王朋", "13301122002"],
["T3", "李旭", "13301122003"],
["T4", "黄国发", "13301122004"],
["T5", "周勤", "13301122005"],
["T6", "谢富顺", "13301122006"],
["T7", "贾教师", "13301122007"],
["T8", "杨教师", "13301122008"]
]
for i in teacher_detail:
real_teacher = Teacher(i[0], i[1], i[2])
teacher_list.append(real_teacher)
return teacher_list
# print(real_teacher)
# s = prepare_course()
# print(s[0].binding(teacher_detail[0][1]))
def course_to_teacher():
"""现课程与教师逐一绑定(每一课程信息绑定倒叙的每一老师信息),并以列表形式返回所课程与教师的绑定结果"""
course_to_teacher_list = []
ls_course = prepare_course()
ls_teacher = create_teacher()
# print(ls_course)
for i in range(0, len(ls_course)):
# course_to_teacher_list.append(ls_course[i].binding(ls_teacher[- (i + 1)]))
# print(ls_teacher[-(i + 1)])
print(ls_course[i].binding(ls_teacher[-(i + 1)]))
# print(ls_teacher[- (i + 1)])
def create_student():
"""建学生信息初始化,并以列表形式返回所创建的8名学生对象"""
ls_student = []
student_name = ["小亮", "小明", "李红", "小丽", "Jone", "小彤", "小K", "慕慕"]
student_no = list(range(1000, 1007+1))
for i in range(len(student_name)):
# print('学号:{0}, 姓名:{1}'.format(student_no[i], student_name[-1 - i]))
student = Student(student_no[i], student_name[-1 - i])
ls_student.append(student)
# print(ls_student)
return ls_student41
收起
正在回答 回答被采纳积分+1
4回答
qq_默默不语_0
2020-02-22 14:42:01
example.py
#!/usr/local/bin/python3.7
# @Time : 2020/2/22 11:36 上午
# @Author : Jason
# @File : example.py
# @Software: PyCharm
class Student(object):
"""学生类"""
def __init__(self, stu_num, name, class_info=None):
"""
初始化学生类的基本信息
:param stu_num: 学生编号
:param name: 学生名称
:param class_info: 课程信息
"""
if class_info is None:
class_info = []
self.stu_num = stu_num
self.name = name
self.class_info = class_info
# 1.设定course_detail方法以属性的方式返回学生的已选课程信息
def course_detail(self, class_info):
"""
返回学生的已选课程信息
:param class_info: 已选课程信息
:return: []
"""
return self.class_info
# 2.设定add_course(self,cour_info)方法,实现添加课程信息
def add_course(self, cour_info):
"""
添加课程信息
:param cour_info: 课程信息
:return:
"""
self.class_info.append(cour_info)
def __str__(self):
return 'name:{},s_number:{}'.format(self.name, self.stu_num)
class Teacher(object):
"""教师类"""
def __init__(self, tea_num, name, tel_num):
"""
初始化教师类的基本信息
:param tea_num: 教师编号
:param name: 教师名称
:param tel_num: 教师的电话
"""
self.tea_num = tea_num
self.name = name
self.tel_num = tel_num
def __str__(self):
return 'teacher_number:{},teacher_name:{}'.format(self.tea_num, self.name)
class Course(object):
"""课程类"""
def __init__(self, cls_num, cls_name):
"""
初始化课程类的基本信息
:param cls_num: 课程编号
:param cls_name: 课程名称
:param cls_teacher: 课程的任课老师
"""
self.cls_num = cls_num
self.cls_name = cls_name
self.cls_teacher = None
def binding(self, teacher):
"""
实现课程绑定授课教师功能
:param teacher: 授课老师
:return:
"""
if isinstance(teacher, Teacher):
self.cls_teacher = teacher
c_dict = {}
c_dict.update(课程名称=self.cls_name, 教师名称=self.cls_teacher.name)
return c_dict
else:
return {}file_exe.py
#!/usr/local/bin/python3.7
# @Time : 2020/2/22 11:36 上午
# @Author : Jason
# @File : file_exe.py
# @Software: PyCharm
# 1、从example.py文件中导入学生类,教师类,课程类,
from example import Student, Teacher, Course
# 2、定义introduction(str)方法,str变量接收标题名字,使用format格式化为效果图中标题的样式,并输出,这里的*号不做数量要求
def introduction(str):
"""
定义标题效果
:param str: 接收标题名字
:return:
"""
print('{0}{1}{2}'.format('*' * 40, str, '*' * 40))
# 3、自定义prepare_course()方法,创建课程信息初始化,并以列表形式返回所创建的8门课程对象,描述如下:
def prepare_course():
"""
创建课程信息初始化,并以列表形式返回所创建的8门课程对象
:return:
"""
cls_info = {
"01": "网络爬虫",
"02": "数据分析",
"03": "人工智能",
"04": "机器学习",
"05": "云计算",
"06": "大数据",
"07": "图像识别",
"08": "Web开发"
}
# 创建空列表
emt_list = []
# (3)循环遍历字典中的数据,将课程编号和课程姓名传入课程类得到课程类的实例,空列表追加每一次的课程类实例
for key, val in cls_info.items():
course = Course(key, val)
emt_list.append(course)
# (4)返回追加后的列表
return emt_list
def create_teacher():
"""
创建教师信息初始化、并返回列表
:return:
"""
teacher_list = [
["T1", "张亮", "13301122001"],
["T2", "王朋", "13301122002"],
["T3", "李旭", "13301122003"],
["T4", "黄国发", "13301122004"],
["T5", "周勤", "13301122005"],
["T6", "谢富顺", "13301122006"],
["T7", "贾教师", "13301122007"],
["T8", "杨教师", "13301122008"]
]
tea_empty_list = []
for info in teacher_list:
# (1)将教师信息的每条数据分别传入教师类,分别使用变量接收
teacher = Teacher(info[0], info[1], info[2])
# (2)创建列表存储步骤(1)教师类的八个实例对象,并返回
tea_empty_list.append(teacher)
return tea_empty_list
def course_to_teacher():
"""
实现课程与教师逐一绑定(每一课程信息绑定倒叙的每一老师信息),并以列表形式返回所课程与教师的绑定结果
:return:
"""
# (1)创建空列表
empty_list = []
# (2)调用课程信息初始化方法,使用变量ls_course接收
ls_course = prepare_course()
# (3)调用教师信息初始化方法,使用变量ls_teacher接收
ls_teacher = create_teacher()
ls_teacher.reverse()
# (4)循环遍历课程信息初始化方法的长度:结合课程信息初始化方法与遍历的数字,得到课程信息初始化方法列表中的每条课程类实例,通过每条课程类实例去绑定
# (课程类中已定义绑定方法,直接调用即可) 倒叙的每一条教师类信息,将绑定后的每条数据追加到空列表
for index, cls in enumerate(ls_course):
rest = cls.binding(ls_teacher[index])
# (5)返回追加后的列表
empty_list.append(rest)
return empty_list
def create_student():
"""
创建学生信息初始化,并以列表形式返回所创建的8名学生对象
:return:
"""
# (1)使用变量ls_student接收学生信息
ls_student = ["小亮", "小明", "李红", "小丽", "Jone", "小彤", "小K", "慕慕"]
# (2)使用range取得学号列表,其中学号的范围为1000~1007
stu_num_list = list(range(1000, 1008))
stu_num_list.reverse()
# (3)创建空列表
stu_list = []
# (4)循环遍历学生信息的长度,将学号与(据效果图所示)倒叙的学生姓名传入学生类,得到学生类的实例,将学生类实例追加至空列表
for index in range(len(ls_student)):
j = -(index + 1)
student = Student(stu_num_list[index], ls_student[j])
stu_list.append(student)
# (5)返回追加后的列表
return stu_list
# 7、根据‘__name__ == __main__’魔法属性,实现函数调用,运行效果与效果图所示,描述如下:
if __name__ == '__main__':
# (1)调用课程绑定教师函数
course_to_teacher_list = course_to_teacher()
# (2)调用学生信息初始化函数
student_list = create_student()
# (3)调用introduction(str),传入参数,实现效果图标题一展示
introduction('慕课学院(1)班学生信息')
# (4)循环输出学生信息
for stu in student_list:
print(stu)
# (5)调用introduction(str),传入参数,实现效果图标题二展示
introduction('慕课学院(1)班选课结果')
# (6)循环遍历课程绑定教师函数的长度,为学生初始化信息的每一对象添加绑定老师之后的课程信息
# # (7)遍历学生初始化信息,实现如效果图Name:xxx, Selected:[{'课程名称': 'xxx', '教师名称': 'xxx'}]的展示
for j in range(len(course_to_teacher_list)):
student_list[j].add_course(course_to_teacher_list[j].get('课程名称'))
print('Name:{},Selected:[{}]'.format(student_list[j].name, course_to_teacher_list[j]))
Bass小骏
2020-02-22 00:06:32
class Student(object): def __init__(self, stu_num, name, course=[]):
你先看一下这段代码, 我开始也是这么做的, 也出现了与你一样的问题
后来经过测试, 发现如果在函数初始化定义的时候, 传入了默认值
那么这个默认值指向同一个对象
也就是你无论实例化了多少个Student实例, 初始化函数中传入的course的初始值, 都指向同一个list实例, 解决方法也很简单:
class Student(object): def __init__(self, stu_num, name): self.course = []
这样做, 就是在你实例化一个Student对象的时候, 将实例化一个list对象传给当前Student实例的course属性
Good Luck!
时间,
2020-02-13 18:26:43
同学,你好。同学可以参考下述代码实现功能:
def course_to_teacher(): course_to_teacher_ls = [] ls_1 = prepare_course() ls_2 = create_teacher() for i in range(len(ls_1)): # 实现倒叙绑定 dic = ls_1[i].binding(ls_2[len(ls_1)-1-i]) course_to_teacher_ls.append(dic) return course_to_teacher_ls
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星