コード例 #1
0
ファイル: __main__.py プロジェクト: robin92/pwravg
def parse_webpage(webpage, width = 80, titlesep = "=", tablesep = "-", semesters = None, semesters_from_oldest=True):
    source = edukacjacl.Source(webpage)
    data = list(sorted(parse(source), key=lambda kv: kv[1]['semester']))
    if not semesters_from_oldest:
        data = list(reversed(data))

    total = {
        "average": 0.0,
        "courses": 0,
        "ects": 0,
        "weightaverage": 0.0,
    }    
    
    for name, tmp in data:
        year, semester, courses = tmp["year"], tmp["semester"], tmp["courses"]
        if semesters is not None and semester not in semesters: continue
        
        print("{}\nrok: {}\tsemestr: {}".format(name, year, semester))
        print("{}".format(width * titlesep))
        if len(courses) > 0:
            print("{}\t\t\t\t{}\t{}".format("NAZWA KURSU", "ECTS", "OCENA"))
            print("{}".format(width * tablesep))
            for course in courses: print("{}\t{}\t{}".format(format_course_title(course[0]), course[1], course[2]))
            
            print("{}".format(width * tablesep))
            print("Punktów ECTS:\t\t{}".format(sum(map(lambda x: x[1], courses))))
            print("Średnia ważona:\t\t{:.3f}".format(average(courses, value = lambda x: x[2], weight = lambda x: x[1])))
            print("Średnia arytmetyczna:\t{:.3f}".format(average(courses, value = lambda x: x[2])))
        
            total["average"] += sum(map(lambda x: x[2], courses))
            total["courses"] += len(courses)
            total["ects"] += sum(map(lambda x: x[1], courses))
            total["weightaverage"] += sum(map(lambda x: x[1] * x[2], courses))
        else: print("Brak danych o kursach!")
        print()

    try:    
        total["average"] /= total["courses"]
        total["weightaverage"] /= total["ects"]
    except ZeroDivisionError: pass
    
    print("Łącznie")
    print("{}".format(width * titlesep))
    print("Odbyto kursów:\t\t{}".format(total["courses"]))
    print("Punktów ECTS:\t\t{}".format(total["ects"]))
    print("Średnia ważona:\t\t{:.3f}".format(total["weightaverage"]))
    print("Średnia arytmetyczna:\t{:.3f}".format(total["average"]))
    
    return True
コード例 #2
0
ファイル: edukacjacl.py プロジェクト: robin92/pwravg
 def test_parse_data(self):
     src = Source(b64decode(consts.source))
     self.assertListEqual(parse(src), self.EXPECTED_DATA, "Something went wrong when parsing <= data differs")