Beispiel #1
0
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
Beispiel #3
0
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")
Beispiel #4
0
def parse_star_parameters(line):
    star = Star()
    s = line
    a = s.find(' ')  #индекс первого пробела
    s = s[a + 1:]
    a = s.find(' ')
    star.r = float(s[:a])  #радиус star
    s = s[a + 1:]
    a = s.find(' ')
    star.color = s[:a]  #
    s = s[a + 1:]
    a = s.find(' ')
    star.m = float(s[:a])
    s = s[a + 1:]
    a = s.find(' ')
    star.x = float(s[:a])
    s = s[a + 1:]
    a = s.find(' ')
    star.y = float(s[:a])
    s = s[a + 1:]
    a = s.find(' ')
    star.vx = float(s[:a])
    s = s[a + 1:]
    a = s.find(' ')
    star.vy = float(s[:a])
    return star
    """Считывает данные о звезде из строки.
    Входная строка должна иметь слеюущий формат:
    Star <радиус в пикселах> <цвет> <масса> <x> <y> <Vx> <Vy>

    Здесь (x, y) — координаты зведы, (Vx, Vy) — скорость.
    Пример строки:
    Star 10 red 1000 1 2 3 4

    Параметры:

    **line** — строка с описание звезды.
    **star** — объект звезды.
    """
    '''pass  # FIXME: not done yet'''
Beispiel #5
0
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