Раздел «Язык Си».PythonGeomOOP:

Задачи

Нужно скачать файл grid.py и запустить его.

from grid import Grid

class Segment:
    def __init__(self, x1, x2):
        self.start = x1
        self.finish = x2
        
    def __repr__(self):
        d = self.length()
        return f'отрезок [{self.start}, {self.finish}] длины {d}' 
        
    def length(self):
        return self.finish - self.start
        
    def draw(self, col='blue'):
        g.draw_line(self.start, 0, self.finish, 0, col)

    def move(self, dx):
        self.start = self.start + dx
        self.finish = self.finish + dx



#######################
# Класс Segment закончился
g = Grid()

s = Segment(10, 40)
print(s)
print('длина равна', s.length())
s.draw()

s.move(50)
print('после move:', s)
s.draw('red')

s2 = Segment(-70, -20)
print(s2)
s2.draw()

#s2.start = -10
#s2.finish = 0
#print('изменили старт и финиш:', s2)
#s2.draw()

Задачи

Задача 1. mirror

Написать функцию mirror для отрезка, которая как в зеркале, отображает отрезок относительно точки 0.

Задача 2. move0

Написать функцию move0 для отрезка, которая двигает отрезок точкой start в точку 0. Длина отрезка не изменяется.

30 апреля

from grid import Grid

class Segment:
    def __init__(self, start, finish):
        self.start = start
        self.finish = finish

    def __str__(self):
        return '{} {}'.format(self.start, self.finish)

    def __repr__(self):
        return '({}, {})'.format(repr(self.start), repr(self.finish))

    def length(self):
        return self.finish - self.start

    def move(self, dx):
        self.start += dx
        self.finish += dx
        
    def draw(self, color):
        grid.draw_line(self.start, 0, self.finish, 0, color)
        
    def __lt__(self, other):
        if self.length() < other.length():
            return True
        else:
            return False

    def __add__(self, other):
        a = min(self.start, other.start)
        b = max(self.finish, other.finish)
        return Segment(a, b)
    
         
def test1():
    s1 = Segment(10, 90)
    print('s1=', s1)
    s1.draw('blue')
    
    s1.move(-100)
    print('s1=', s1)
    s1.draw('red')
    
    s2 = Segment(20, 50)
    print('s2=', s2)
    s2.draw('green')


def test2():
    s1 = Segment(-90, 10)
    print('s1=', s1)
    s2 = Segment(20, 50)
    print('s2=', s2)

    if s1 < s2:       # s1 < s2
        s1.draw('red')
        s2.draw('green')
    else:
        s2.draw('red')
        s1.draw('green')
        
    s3 = s1 + s2
    print(s1)
    print(s2)
    print(s3)
    s3.draw('yellow')
    

grid = Grid()

#test1()
test2()

grid.done()   

-- TatyanaDerbysheva - 02 Apr 2019

Attachment sort Action Size Date Who down Comment
grid.py.txt manage 4.7 K 09 Apr 2019 - 16:13 TatyanaDerbysheva