Python_组合

组合:类和类之间有关联,假设定义一个人的类,人的头,手,脚,嘴等数据属性,这几个属性又可以是各自的类或类实例化的对象,这就是组合

 

#选课系统
class School:
    def __init__(self,name,addr):
        self.name = name
        self.addr = addr

class Teacher:
    def __init__(self,name,course,school):
        self.name = name
        self.course = course
        self.school =school

class Course:
    def __init__(self,name,price,period,school):
        self.name = name
        self.price = price
        self.period = period
        self.school = school

school_1 = School("清华大学","北京朝阳街")
school_2 = School("华南理工大学","广州天河区")
school_3 = School("中山大学","广州海珠区")

school_msg = """
1 %s %s
2 %s %s
3 %s %s
    
""" %(school_1.name,school_1.addr,school_2.name,school_2.addr,school_3.name,school_3.addr)

course_msg ="""
1 计算机
2 自然与科学
3 商务英语
4 经济与营销
"""

import  re
stat = True
while stat:
    print(school_msg)
    school_menu = {
        '1':school_1,
        '2':school_2,
        '3':school_3
    }
    school_choice = input("请选择学校:")
    #用正则验证客户是否按要求输入
    a = r"\d"
    res = re.match(a,school_choice)
    if not res:
        print("......请输入正确的数字选项.......")
        continue
    if 0 < int(school_choice) < 4:
        print(school_menu[school_choice].name, school_menu[school_choice].name)
    else:
        print("--------------------请输入正确的数字选项--------------------")
        continue

    print(course_msg)
    course_menu = {
        '1': "计算机",
        '2': "自然与科学",
        '3': "商务英语",
        '4': "经济与营销"
    }
    course_price = {
        '1': 800,
        '2': 899,
        '3': 900,
        '4': 996
    }
    course_perdiod = {
        '1': 60,
        '2': 90,
        '3': 120,
        '4': 365
    }
    while stat:
        course_choice = input("请选择课程名:")
        # 用正则验证客户是否按要求输入
        a = r"\d"
        res = re.match(a, course_choice)
        if not res:
            print("......请输入正确的数字选项.......")
            continue
        if 0 < int(school_choice) < 4:
            my_choice = Course(course_menu[course_choice],course_price[course_choice],
                               course_perdiod[course_choice],school_menu[school_choice])
        else:
            print("--------------------请输入正确的数字选项--------------------")
            continue
        print()
        print("恭喜您! 您已经报读了 %s学校的 %s课程,学费是%s元,学习周期是%s天"
              %(my_choice.school.name,my_choice.name,my_choice.price,my_choice.period))
        stat = False
        break

 

posted on 2019-08-13 11:06  詹生  阅读(274)  评论(0编辑  收藏  举报

导航