为什么课程和教师名称为None
''' 相关类的定义 '''
# 定义学生类
class Student():
''' 描述学生的学号、姓名、已选课程(默认值为空列表)三项信息 '''
def __init__(self, s_name, s_id):
self.s_name = s_name
self.s_id = s_id
self.s_c = []
# 1.设定course_detail方法以属性的方式返回学生的已选课程信息
def course_detail(self):
return self.s_c
# 2.设定add_course(self,cour_info)方法,实现添加课程信息(cour_info)至学生对象的已选课程属性
def add_course(self, cour_info):
self.s_c.append(cour_info)
# 3.正确设置学生类信息的字符串(__str__(self))显示方法,返回如效果图所示学生信息表的学生姓名,学生学号
def __str__(self):
print('name:{0},s_number:{1}'.format(self.s_name, self.s_id))
# 定义教师类
class Teacher():
''' 描述教师编号、教师姓名、手机号码三项信息 '''
def __init__(self, t_id, t_name, t_p):
self.t_name = t_name
self.t_id = t_id
self.t_p = t_p
# 正确设置教师类信息的字符串(__str__(self))显示方法
# 返回教师编号与教师姓名属性
def __str__(self):
print('ID:{0},t_name:{1}'.format(self.t_id, self.t_name)
)
# 定义课程类
class Curriculum():
''' 描述课程编号、课程名称、授课教师(teacher默认值为None) '''
def __init__(self,c_id, c_name, teacher = None):
self.c_id = c_id
self.c_name = c_name
self.teacher = teacher
# 设定binding(self,teacher)方法实现课程绑定授课教师功能
def binding(self,teacher):
#1)使用if语句判断教师类的实例是否存在,
if self.teacher == teacher:
# 如果存在,将该实例赋值给课程类的授课教师属性,
# 并将课程名称和教师名称包装成字典进行返回,
# 如效果图{'课程名称': 'xxx', '教师名称': 'xxx'}格式。
print("[{{'课程名称':'{1}','教师名称':'{2}'}}]".format(self.c_name,self.teacher))
#2)如果不存在教师类的实例,返回空
else:
return None
''' 实现相应的业务逻辑 '''
#从example.py文件中导入学生类,教师类,课程类
import example
# 1.定义introduction(str)方法,str变量接收标题名字,使用format格式化为效果图中标题的样式,并输出
def introduction(st):
print('*****慕课学院(1)班{0}*****'.format(st))
# 2.自定义prepare_course()方法,创建课程信息初始化,并以列表形式返回所创建的8门课程对象
def prepare_course():
c = { "01": "网络爬虫", "02": "数据分析",
"03": "人工智能", "04": "机器学习",
"05": "云计算", "06": "大数据",
"07": "图像识别", "08": "Web开发"}
c_list = []
for k,v in c:
c_list.append(example.Curriculum(k,v))
return c_list
# 3.自定义create_teacher()方法,创建教师信息初始化,并以列表形式返回所创建的8名教师对象
def create_teacher():
t = [[ "T1", "张亮", "13301122001"],
["T2", "王朋", "13301122002"],
["T3", "李旭", "13301122003"],
["T4", "黄国发", "13301122004"],
["T5", "周勤", "13301122005"],
["T6", "谢富顺", "13301122006"],
["T7", "贾教师", "13301122007"],
["T8", "杨教师", "13301122008"]]
t_list = []
for i in t:
t_list.append(example.Teacher(i[0],i[1],i[2]))
return t_list
# 4.自定义course_to_teacher()方法,实现课程与教师逐一绑定(每一课程信息绑定倒叙的每一老师信息)
# 并以列表形式返回所课程与教师的绑定结果
def course_to_teacher():
b_list = []
ls_course = prepare_course()
ls_teacher = create_teacher()
for j in range(0,len(ls_course)):
b_list.append(ls_course[j].binding(len(ls_teacher)-(j+1)))
return b_list
# 5.自定义create_student()方法,创建学生信息初始化,并以列表形式返回所创建的8名学生对象
def create_student():
ls_student = ["小亮", "小明", "李红", "小丽", "Jone", "小彤", "小K", "慕慕"]
ids = range(1000,1008)
s_list = []
for i in range(len(ids)):
s_name_id = example.Student(ls_student[-(i+1)],ids[i])
s_list.append(s_name_id)
return s_list
# 6.根据‘__name__ == __main__’魔法属性,实现函数调用,运行效果与效果图所示
if __name__ == '__main__':
# (1)调用课程绑定教师函数
b_list = course_to_teacher()
# (2)调用学生信息初始化函数
s_list = create_student()
# (3)调用introduction(str),传入参数,实现效果图标题一展示
introduction('学生信息')
# (4)循环输出学生信息
for j in s_list:
j.__str__()
# (5)调用introduction(str),传入参数,实现效果图标题二展示
introduction('选课结果')
# (6)循环遍历课程绑定教师函数的长度,为学生初始化信息的每一对象添加绑定老师之后的课程信息
for j in range(len(b_list)):
s_list[j].add_course(b_list[j])
# (7)遍历学生初始化信息,实现如效果图Name:xxx, Selected:[{'课程名称': 'xxx', '教师名称': 'xxx'}]的展示
for i in s_list:
print('Name:{}, Selected:{}'.format(i.s_name,i.course_detail()))
*****慕课学院(1)班学生信息*****
name:慕慕,s_number:1000
name:小K,s_number:1001
name:小彤,s_number:1002
name:Jone,s_number:1003
name:小丽,s_number:1004
name:李红,s_number:1005
name:小明,s_number:1006
name:小亮,s_number:1007
*****慕课学院(1)班选课结果*****
Name:慕慕, Selected:[None]
Name:小K, Selected:[None]
Name:小彤, Selected:[None]
Name:Jone, Selected:[None]
Name:小丽, Selected:[None]
Name:李红, Selected:[None]
Name:小明, Selected:[None]
Name:小亮, Selected:[None]
正在回答
同学,你好。同学代码有以下几处导致输出结果是none:
循环课程信息字典时,需要用item()函数将字典数据数据取出;
返回初始化教师信息时,直接在for循环中返回,只会有一个教师的信息的列表,需要在循环结束后返回所有教师信息的列表。
循环绑定教师信息时,blinding()函数的参数应是教师列表的数据,同学这里只传递了教师列表的长度,导致b_list数据是none。
判断教师信息是否存在,直接判断参数teacher是否有数据就可以了,在返回时,需要return返回结果,print()函数只打印了结果,没有返回数据。
同学可以进行相应的修改。
如果解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星