1、问题需求
定义一个类:Person,有 name, age 属性
定义一个子类:Teacher, 有 tno(教师号) 属性, 有 question()
定义一个子类:Student, 有 sno(学号) 属性, 有 answer()打印 老师的信息 和 学生的信息
老师调用 question(), 把 下面的字符串持久到 question.txt 文件
1 + 2 =
3 * 5 =
9 - 1 =
100 * 3 =
3000 - 1000 =
学生调用answer(),从 question.txt 文件中读取每行数据,封装成一个对象(包括 结果答案);
计算每道题的答案并把 试题内容和答题结果 打印到控制台
2、 代码实现
# 通过切分问题,计算出答案
class Answer():
def __init__(self):
pass
def calculate(self, question):
list = question.split(' ')
a = int(list[0])
b = int(list[2])
if list[1] == '+':
return a + b
elif list[1] == '-':
return a - b
elif list[1] == '*':
return a * b
elif list[1] == '/':
return a / b
# Person基类
class Person(object):
def __init__(self):
pass
# 教师类,将问题持久化到文本中
class Teacher(Person):
def __init__(self, tno):
super(Teacher, self).__init__()
self.tno = tno
def question(self):
list = ['1 + 2 = ', '3 * 5 = ', '9 - 1 = ', '100 * 3 = ', '3000 - 1000 = ']
# list.append(content)
file = open('question.txt', 'w+')
for i in list:
file.write(i + '\n')
def __str__(self):
return '老师编号:'+str(self.tno)
# 学生类,将文本答案逐行读出,调用Answer类返回每一行的答案
class Student(Person):
def __init__(self, sno):
super(self.__class__, self).__init__()
self.sno = sno
def answer(self):
file = open('question.txt', 'r+')
lines = file.readlines()
for i in lines:
a = Answer().calculate(i.strip('\n'))
print(i.strip('\n'), a)
def __str__(self):
return '学生编号:'+str(self.sno)
t = Teacher(1)
t.question()
s = Student(2)
print(t)
print(s)
s.answer()
3、运行结果
4、总结
这份题目很适合做python初学的练习。
这里涉及到了字符串分割、文件读写、元组的使用和类的继承等知识点。
初学python,对python的语法和类的使用还不是很熟悉,有什么不足的地方还请大家多多指点。