0
点赞
收藏
分享

微信扫一扫

Python初学之学生和老师的question和answer问题

迎月兮 2022-03-10 阅读 36


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、运行结果

Python初学之学生和老师的question和answer问题_python

4、总结

这份题目很适合做python初学的练习。

这里涉及到了字符串分割、文件读写、元组的使用和类的继承等知识点。

初学python,对python的语法和类的使用还不是很熟悉,有什么不足的地方还请大家多多指点。




举报

相关推荐

0 条评论