def parse_star_parameters(line): """Считывает данные о звезде из строки. Входная строка должна иметь слеюущий формат: Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy> Здесь (x, y) — координаты зведы, (Vx, Vy) — скорость. Пример строки: Star 10 red 1000 1 2 3 4 Параметры: **line** — строка с описание звезды. **star** — объект звезды. """ star = Star() line_elems = line.split(' ') star.size = float(line_elems[1]) star.color = str(line_elems[2]) star.m = float(line_elems[3]) star.x = float(line_elems[4]) star.y = float(line_elems[5]) star.Vx = float(line_elems[6]) star.Vy = float(line_elems[7]) return star pass # FIXME: not done yet
def parse_object_parameters(line: str): """ Reads space object parameters from string line Входная строка должна иметь слеюущий формат: Star/Planet <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy> Здесь (x, y) — координаты зведы, (Vx, Vy) — скорость. Пример строки: Star 10 red 1000 1 2 3 4 @param line: a string that describes object @raise ValueError: raised is line format is incorrect """ pattern = r'(Star|Planet)\s+([0-9.,eE\-+]+)\s+(\w+)\s+([0-9.,eE\-+]+)\s+([0-9.,eE\-+]+)\s+([0-9.,eE\-+]+)\s+([0-9.,' \ r'eE\-+]+)\s+([0-9.,eE\-+]+)\s+\n?' match = re.match(pattern, line) if match is None: raise ValueError('Line format is not correct') obj = None obj_type = match.group(1) if obj_type == 'Star': obj = Star() elif obj_type == 'Planet': obj = Planet() else: # must never occur, but still raise ValueError('Line format is not correct') radius = float(match.group(2)) if radius < 0: raise ValueError('Line format is not correct') else: obj.R = radius color = match.group(3) obj.color = color mass = float(match.group(4)) if mass < 0: raise ValueError('Line format is not correct') else: obj.m = mass x = float(match.group(5)) obj.x = float(x) y = float(match.group(6)) obj.y = float(y) vx = float(match.group(7)) obj.Vx = float(vx) vy = float(match.group(8)) obj.Vy = float(vy) return obj
def parse_parameters(line): """Считывает данные о небесном теле из строки. Входная строка должна иметь слеюущий формат: Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy> Здесь (x, y) — координаты, (Vx, Vy) — скорость. Пример строки: Star 10 red 1000 1 2 3 4 Параметры: **line** — строка с описание небесного тела. **star** — объект. """ object_type = line.split()[0].lower() if object_type == "star": star = Star() star.type = line.split()[0] star.R = float(line.split()[1]) star.color = line.split()[2] star.m = float(line.split()[3]) star.x = float(line.split()[4]) star.y = float(line.split()[5]) star.Vx = float(line.split()[6]) star.Vy = float(line.split()[7]) return star elif object_type == "planet": planet = Planet() planet.type = line.split()[0] planet.R = float(line.split()[1]) planet.color = line.split()[2] planet.m = float(line.split()[3]) planet.x = float(line.split()[4]) planet.y = float(line.split()[5]) planet.Vx = float(line.split()[6]) planet.Vy = float(line.split()[7]) planet.name = line.split()[10] return planet else: print("Unknown space object")
def parse_star_parameters(line, star): """Считывает данные о звезде из строки. Входная строка должна иметь слеюущий формат: Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy> Здесь (x, y) — координаты зведы, (Vx, Vy) — скорость. Пример строки: Star 10 red 1000 1 2 3 4 Параметры: **line** — строка с описание звезды. **star** — объект звезды. """ l = line.split() star = Star() star.R = line(1) star.color = line(2) star.m = line(3) star.x = line(4) star.y = line(5) star.Vx = line(6) star.Vy = line(7) return star