# Просто для удовольствия

Если вы хотите продуктивно изучать Python, эта статья может быть не для вас. Все, что последует, может быть глупостью, глупостью и пустой тратой времени. Но это весело!

Вариант 1

import time

d = {'-':'\\', '\\':'|', '|':'/', '/':'-'}
x = '-'
while True:
    print((x+' ')*20, end='\r')
    x = d[x]
    time.sleep(0.25)

^ запустите этот фрагмент кода и посмотрите, что произойдет! (не нужно ничего устанавливать)

Вариант 2

import time

d = {'+':'x', 'x':'+'}
x = '+'
while True:
    print((x+' ')*20, end='\r')
    x = d[x]
    time.sleep(0.25)

^ запустите этот фрагмент кода и посмотрите, что произойдет!

Вариант 3

import time

d = {'v':'<', '<':'^', '^':'>', '>':'v'}
x = 'v'
while True:
    print((x+' ')*20, end='\r')
    x = d[x]
    time.sleep(0.25)

^ запустите этот фрагмент кода и посмотрите, что произойдет!

Что происходит, когда вы запускаете код

У нас получаются крутящиеся узоры.

Но как?

Во-первых, нам нужно понять, что делает символ \r.

Символ возврата каретки \r

Символ возврата каретки \r — это escape-символ, который перемещает курсор обратно в начало строки. Другими словами, это позволяет нам печатать то, что мы ранее печатали.

import time

print(1, end='\r')
time.sleep(1)

print(2, end='\r')
time.sleep(1)

print(3)

Здесь time.sleep(1) заставляет нашу программу ничего не делать в течение 1 секунды. Если вы запустите эту программу, она сначала напечатает 1. Через 1 секунду 1 станет 2. А еще через секунду 2 станет 3.

Это из-за end='\r'. После того, как мы напечатаем 1, вместо перехода к новой строке \r заставляет наш курсор вернуться к началу строки. Таким образом, печать 2 переопределяет существующий 1.

Анимация вращающейся вещи

import time

print('-', end='\r')
time.sleep(1)

print('\\', end='\r')
time.sleep(1)

print('|', end='\r')
time.sleep(1)

print('/', end='\r')
time.sleep(1)

print('-')

^ это печатает -, затем \, затем |, затем /. Из-за символа \r каждый новый напечатанный символ заменяет старый, что создает эффект вращающейся строки. Автоматизируйте это с помощью цикла while, напечатайте 20 из них подряд, и мы получим то, что видим выше!

Заключение

Надеюсь, это было забавным дополнением к вашему репертуару Python.

Несколько заключительных слов

Если эта история была полезной и вы хотите оказать небольшую поддержку, вы можете:

  1. Похлопайте 50 раз за эту историю (мне это очень-очень помогает)
  2. Подпишитесь на членство в Medium, используя мою ссылку (5 долларов в месяц, чтобы читать неограниченное количество историй на Medium)

Получить мои бесплатные электронные книги: https://zlliu.co/books