alina981 / Lab-1

Лабораторная работа №1
0 stars 0 forks source link

Ответ на вопрос #1

Open ananasn opened 1 week ago

ananasn commented 1 week ago

Отвечу на вопрос по заданию с узором. Чтобы сделать узор не вниз, а вправо нужно учесть несколько моментов:

  1. Функция print в конец любой строки по умолчанию добавляет \n, перенос на начало новой строки. Чтобы этого избежать можно делать так print('haha', end='') 2.Вместо while True сделайте, например 5 итераций, в противном случее терминал переполнится вправо и начет сам переносить узол и все превратится в "кашу".
  2. Задайте ширину offset для единицы узора. На каждой итерации увеличивайте offset на счетчик итерации.
  3. Перед печатью каждой строки узора надо сдвигать вправо на offset counter ``` print(f'\x1b[{countoffset}C', end='')```
  4. В конце каждой итерации поднимайтесь на высоту узора print('\x1b[10A') #вверх
  5. После последней итерации опутите курсор в самый низ print('\x1b[10B') #вниз

Итого вот этот код печатает 5 узоров вправо

def romb():
    lenn = 9
    space1 = lenn // 2
    space2 = 0
    step = 1
    center = lenn // 2 + 1
    count = 0
    offset = 10*3
    while count < 5:
        print(f'\x1b[{count*offset}C', end='')
        print(f'\x1b[48;5;255m{"   " * space1}\x1b[40m{"   "}\x1b[48;5;255m{"   " * space1}\x1b[0m')    
        space2 = 1
        space1 -= 1
        for x in range(1, lenn-1):
            print(f'\x1b[{count*offset}C', end='')
            draw_line(space1, space2)
            if x + 1 < center:
                space1 -= step
                space2 += step * 2
            else:
                space1 += step
                space2 -= step * 2
        print(f'\x1b[{count*offset}C', end='')
        print(f'\x1b[48;5;255m{"   " * space1}\x1b[40m{"   "}\x1b[48;5;255m{"   " * space1}\x1b[0m')
        print('\x1b[10A') #вверх
        count += 1
    print('\x1b[10B') #вниз

image

ananasn commented 1 week ago

Работа в любом случае принята, человечек в доп задании забавный :)