本文最后更新于35 天前,其中的信息可能已经过时,如有错误请发送邮件到liumiao0429@foxmail.com
计算:(使用类变量,判断也在类内实现)
学生:男、女生人数
教师:>=45、<45岁人数
数据由键盘输入(不指定人数,输到退出,结束程序)
完整代码
class Person:
def __init__(self, name, age, sex, type):
self.name = name
self.age = age
self.sex = sex
self.type = type
# 输入信息
def input_info(self):
try:
info = input(f"请输入姓名、年龄、性别(用空格分隔):")
name, age, sex = info.split()
self.name = name
self.age = int(age)
self.sex = sex
except ValueError as e:
print(f"输入格式错误,请确保输入格式为:姓名 年龄 性别。错误详情:{e}")
return None
return True
class Student(Person):
def __init__(self, boy_num, girl_num):
super().__init__("", 0, "", "学生")
self.boy_num = boy_num
self.girl_num = girl_num
def input_info(self):
if super().input_info() is None:
return
self.PDSex(self.sex)
def PDSex(self, sex):
if sex == "男":
self.boy_num += 1
elif sex == "女":
self.girl_num += 1
else:
print("性别输入错误")
def print_info(self):
# print("学生信息:")
# print(f"男生人数:{self.boy_num}")
# print(f"女生人数:{self.girl_num}")
return self.boy_num, self.girl_num
class Teacher(Person):
def __init__(self, yang_T, oder_T):
super().__init__("", 0, "", "老师")
self.yang_T = yang_T # 45岁及以上
self.oder_T = oder_T # 45岁以下
def input_info(self):
if super().input_info() is None:
return
self.PDAge(self.age)
def PDAge(self, age):
if age >= 45:
self.yang_T += 1
elif age < 45:
self.oder_T += 1
def print_info(self):
# print("老师信息:")
# print(f"中年老师人数(45岁及以上):{self.yang_T}")
# print(f"年轻老师人数(45岁以下):{self.oder_T}")
return self.yang_T, self.oder_T
# 测试
if __name__ == "__main__":
print("欢迎使用信息管理系统")
Boy_sum = 0
Girl_sum = 0
yang_T_sum = 0
oder_T_sum = 0
while True:
print("你是老师还是学生? -1退出")
input_type = input("请输入:1 老师 2 学生:")
if input_type == "1":
teacher = Teacher(0, 0)
teacher.input_info()
result = teacher.print_info()
if result:
yang_T, oder_T = result
yang_T_sum += yang_T
oder_T_sum += oder_T
elif input_type == "2":
student = Student(0, 0)
student.input_info()
result = student.print_info()
if result:
boy_num, girl_num = result
Boy_sum += boy_num
Girl_sum += girl_num
elif input_type == "-1":
print("程序退出")
break
print(f"全部信息:")
print(f"中年老师人数(45岁及以上):{yang_T_sum} 年轻老师人数(45岁以下):{oder_T_sum}")
print(f"男生总人数:{Boy_sum} 女生总人数:{Girl_sum}")
测试用例
老师
小莫 20 男
小赵 55 男
小李 22 女
学生
小派 20 男
小琳 22 女
小马 19 女
小像 19 女
中年老师人数(45岁及以上):1 年轻老师人数(45岁以下):2
男生总人数:1 女生总人数:3