Python之面向对象经典题目

题目

1.定义一个学校人员类SchoolPerson,
其中,属性:姓名name、性别sex、年龄age;
方法:设置人员的各个属性的set_info方法;
获取各属性值的get_info方法。
定义好类以后,再定义2个人员进行测试。

2.在第1个题的基础上添加两个方法:
其中,init()方法,完成属性的初始化(要求从键盘输入各属性的值);
del()方法,完成输出“__del__方法调用”这一句话(作用是用来销毁对象)。

3.创建学生类Student,继承自SchoolPerson类,添加额外两个属性:班级class、学号sno。
添加方法:打印学生的所有信息print_info方法。
创建教师类Teacher,继承自SchoolPerson类,添加额外两个属性:部门department、工号cno。
添加方法:打印教师的所有信息print_info方法。
并定义学生类、教师类的对象,然后分别调用print_info方法,实现各自对象属性信息的输出。

4.创建类MyMath,计算圆的周长、面积和球的表面积、体积,结果保留两位小数。若输入的是非数字,则输出:请输入数字!提示:要引入math包。
结果如下,请输入半径:5
圆的周长:31.42
圆的面积:78.54
球的表面积:314.16

解析

1.第一题

解法:

class SchoolPerson:
    def set_info(self):
        self.name = input("输入姓名:")
        self.sex = input("输入性别:")
        self.age = input("输入年龄:")

    def get_info(self):
        return self.name,self.sex,self.age

# student
student = SchoolPerson()
student.set_info()
print(student.get_info())
# teacher
teacher = SchoolPerson()
teacher.set_info()
print(teacher.get_info())

执行结果(以执行加运算为例):

"D:\Python Soft\Python39\python.exe" C:/Users/HP/PycharmProjects/pythonProject/python5/5-1.py
输入姓名:xxl
输入性别:男
输入年龄:20
('xxl', '男', '20')
输入姓名:李老师
输入性别:女
输入年龄:27
('李老师', '女', '27')

Process finished with exit code 0

2.第二题

解法:

class SchoolPerson:
    # 初始化
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    # 输出语句,销毁对象
    def __del__(self):
        print("__del__方法调用")

    def __str__(self):
        return "初始信息为 姓名:%s,性别:%s,年龄:%s" % (self.name, self.sex, self.age)

    def set_info(self):
        name1 = input("输入修改后的姓名:")
        self.name = name1
        sex1 = input("输入修改后的性别:")
        self.sex = sex1
        age1 = input("输入修改后的年龄:")
        self.age = age1

    def get_info(self):
        return "修改信息为姓名:%s,性别:%s,年龄:%s" % (self.name, self.sex, self.age)


a = input("输入初始姓名:")
b = input("输入初始性别:")
c = input("输入初始年龄:")
student = SchoolPerson(a, b, c)
print(student)
student.set_info()
print(student.get_info())
l = input("输入初始姓名:")
m = input("输入初始性别:")
n = input("输入初始年龄:")
teacher = SchoolPerson(l, m, n)
print(teacher)
teacher.set_info()
print(teacher.get_info())

执行结果:

"D:\Python Soft\Python39\python.exe" C:/Users/HP/PycharmProjects/pythonProject/python5/5-2.py
输入初始姓名:xxl
输入初始性别:men
输入初始年龄:20
初始信息为 姓名:xxl,性别:men,年龄:20
输入修改后的姓名:xxx
输入修改后的性别:men
输入修改后的年龄:19
修改信息为姓名:xxx,性别:men,年龄:19
输入初始姓名:Mr.zhao
输入初始性别:men
输入初始年龄:40
初始信息为 姓名:Mr.zhao,性别:men,年龄:40
输入修改后的姓名:Mr.zhang
输入修改后的性别:men
输入修改后的年龄:29
修改信息为姓名:Mr.zhang,性别:men,年龄:29
__del__方法调用
__del__方法调用
 
Process finished with exit code 0

3.第三题

解法:

class SchoolPerson(object):
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def set_(self):
        name = input("请输入姓名:")
        self.name = name
        sex = input("请输入性别:")
        self.sex = sex
        age = input("请输入年龄:")
        self.age = age


class Student(SchoolPerson):
    def set_info(self):
        class1 = input("请输入班级:")
        self.class1 = class1
        sno = input("请输入学号:")
        self.sno = sno

    def print_info(self):
        return "学生的信息为:姓名:%s  性别:%s  年龄:%s  班级:%s  学号:%s" % (self.name, self.sex, self.age, self.class1, self.sno)


class Teacher(SchoolPerson):
    def set_info(self):
        department = input("请输入部门:")
        self.department = department
        cno = input("请输入工号:")
        self.cno = cno

    def print_info(self):
        return "老师的信息为:姓名:%s  性别:%s  年龄:%s  部门:%s  工号:%s" % (self.name, self.sex, self.age, self.department, self.cno)

a = Student("小明", "男", "18")
a.set_()
a.set_info()
print(a.print_info())
b = Teacher("王老师", "男", "42")
b.set_()
b.set_info()
print(b.print_info())

执行结果:

"D:\Python Soft\Python39\python.exe" C:/Users/HP/PycharmProjects/pythonProject/python5/5-4.py
请输入姓名:lxx
请输入性别:男
请输入年龄:18
请输入班级:java
请输入学号:1234567890
学生的信息为:姓名:lxx  性别:男  年龄:18  班级:java  学号:1234567890
请输入姓名:Amy
请输入性别:女
请输入年龄:20
请输入部门:宣传部
请输入工号:111111111
老师的信息为:姓名:Amy  性别:女  年龄:20  部门:宣传部  工号:111111111
 
Process finished with exit code 0

4.第四题

解法:

import math
class MyMath(object):
    def __init__(self, r):
        self.r = r

    # 周长
    def perimeter(self):
        c = 2 * math.pi * self.r
        return c

    # 面积
    def area(self):
        a = math.pi * r * r
        return a

    # 体积
    def volume(self):
        v = (4 / 3) * math.pi * r * r * r
        return v


try:
    r = int(input("请输入半径:"))
    p = MyMath(r)
    print("圆的周长={:.2f}".format(p.perimeter()))
    print("圆的面积={:.2f}".format(p.area()))
    print("球的表面积={:.2f}".format(p.surfaceArea()))

except:
    print("请输入数字!")

执行结果:

"D:\Python Soft\Python39\python.exe" C:/Users/HP/PycharmProjects/pythonProject/python5/5-5.py
请输入半径:5
圆的周长=31.42
圆的面积=78.54
球的表面积=314.16
 
Process finished with exit code 0

  • 8
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值