SKILL_SCORE_DICT = { ".12--1<": 2.0, ".12--1o": 1.7, ".41/": 0.6, ".8-1<": 1.3, ".8-1o": 1.1, ".8-3<": 1.5, ".8-3o": 1.3, ".821<": 1.5, "4.-/": 0.6, "8.--/": 1.0, "8.--<": 1.2, "8.--o": 1.0, "8.11<": 1.4, "8.11o": 1.2, "8.22/": 1.6, "8.22o": 1.4, "8.31<": 1.6, } FRONTWARD = 1 BACKWARD = 0 class Skill: """Class skill Each object `skill` is composed by the following fields : - numeric_code - direction - rotation_quantity - position - twist_in_quantity - twist_out_quantity """ def __init__(self, skill_string): skill_string = skill_string.strip().replace("\s", "") self.numeric_code = skill_string if skill_string.startswith("."): self.direction = FRONTWARD elif skill_string.find("."): self.direction = BACKWARD else: self.rotation_quantity = None position = skill_string[-1:] if position == "o" or position == "<" or position == "/": self.position = position else: self.position = None rotation_quantity = len(skill_string) if rotation_quantity == 4: self.rotation_quantity = 1 start = 2 elif rotation_quantity == 5: self.rotation_quantity = 2 start = 2 elif rotation_quantity == 7: self.rotation_quantity = 3 start = 3 elif rotation_quantity == 8: self.rotation_quantity = 4 start = 3 else: self.rotation_quantity = None self.twist_in_quantity = None self.twist_out_quantity = None print(f"Unknow skill: {skill_string}") return twisting = skill_string[start:-1] self.twist_in_quantity = 0 if twisting[0] == "-" else int(twisting[0]) self.twist_out_quantity = 0 if twisting[-1:] == "-" else int(twisting[-1:]) def __str__(self): return self.numeric_code