Untitled

 avatar
unknown
python
3 years ago
1.8 kB
4
Indexable
from collections import namedtuple
characteristic = [
        'wanna_learn_datascience',
        'wanna_learn_ml',
        'wanna_learn_IR',
        'wanna_learn_RecSys',
        'stand_out_from_croud',
        'passionate_with_coding'
        ]
requirements = [
        'finish_assignment',
        'finish_project',
        'keep_practice',
        'study_hard',
        'more_discussion'
        ]

rules = {
        'pass': lambda x: [x[r] for r in requirements],
        'join_clip_lab': lambda x:[x[c] for c in characteristic]
    }

Student = namedtuple("Student", ["name"]+characteristic+requirements)
Student.__new__.__defaults__ = (False,) * len(Student._fields)

# stu = Student._make([True]*len(characteristic+requirements))
s1 = Student(
        **{
        'name':"Leon",
        'finish_assignment':True,
        'finish_project':True,
        'keep_practice':True,
        'study_hard':True,
        'more_discussion':True
        }
    )

s2 = Student(
        **{
        'name':"Victor",
        'finish_assignment':True,
        'finish_project':True,
        'keep_practice':True,
        'study_hard':True,
        'more_discussion':True,
        'wanna_learn_datascience':True,
        'wanna_learn_ml':True,
        'wanna_learn_IR':True,
        'wanna_learn_RecSys':True,
        'stand_out_from_croud':True,
        'passionate_with_coding':True
        }
    )


for stu in [s1, s2]:
    result = all(rules['pass']({_f:stu.__getattribute__(_f) for _f in stu._fields}))
    result = "Student {} can {} WSM".format(stu.name,"pass" if result == True else "fail") 
    print(result)
    result = all(rules['join_clip_lab']({_f:stu.__getattribute__(_f) for _f in stu._fields}))
    result = "Student {} {} join clip_lab".format(stu.name,"can" if result == True else "can't") 
    print(result)
Editor is loading...