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

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的语法和类的使用还不是很熟悉,有什么不足的地方还请大家多多指点。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日月星辰TEL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值