You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							307 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
	
	
							307 lines
						
					
					
						
							12 KiB
						
					
					
				| ---
 | |
| title: Библиотека Python Turtle 
 | |
| excerpt: Графическая библиотека turtle 
 | |
| date: '2023-11-08'
 | |
| tags:
 | |
|   - Информатика
 | |
|   - Программирование
 | |
|   - Python
 | |
|   - Turtle
 | |
| ---
 | |
| 
 | |
| <TableOfContents>
 | |
| 
 | |
| - [Урок 1](#урок-1)
 | |
| - [Урок 2](#урок-2)
 | |
| 
 | |
| </TableOfContents>
 | |
| 
 | |
| # Урок 1 
 | |
| 
 | |
| Модуль turtle - это графическая библиотека для работы с 2D-графикой в Python. Сначала его нужно подключить к скрипту.
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| ```
 | |
| 
 | |
| После этого необходимо создать "перо" и записать ссылку на него в переменную
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| pen = turtle.Pen()
 | |
| turtle.exitonclick() #Выход при нажатии мышкой в окне Turtle
 | |
| ```
 | |
| 
 | |
| Команда forward() чертит прямую линию. Она принимает в качестве аргумента длину линии в пикселях.
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| pen = turtle.Pen()
 | |
| 
 | |
| pen.forward(100) # Прямая линия длиной в 100 пикселей
 | |
| ```
 | |
| 
 | |
| Команда left() и right() поворачивает курсор. Они принимают в качестве аргумента угол поворота.
 | |
| ```python
 | |
| import turtle
 | |
| pen = turtle.Pen()
 | |
| 
 | |
| pen.forward(200) # Прямая линия длиной в 200 пикселей
 | |
| pen.left(135) # Поворачиваем на 135 градусов влево
 | |
| 
 | |
| pen.forward(200) # Прямая линия длиной в 200 пикселей
 | |
| pen.right(135) # Поворачиваем на 135 градусов вправо
 | |
| 
 | |
| pen.forward(200) # Прямая линия длиной в 200 пикселей
 | |
| ```
 | |
| 
 | |
| Мы можем перемещать перо без начертания линий. Для этого нужно сначала поднять перо с помощью команды penup(), затем переместить его в нужную точку с помощью команды setpos(x, y), где x и y - это координаты точки, в которую мы перемещаем наше перо. После всех проделанных манипуляций необходимо опустить перо с помощью команды pendown().
 | |
| 
 | |
| Подведем итог. Для того чтобы переместить перо в другую точку нужно:
 | |
| 
 | |
| 1. Поднять перо с помощью команды penup()
 | |
| 
 | |
| 2. Переместить перо в точку x, y (x и y - координаты в пикселях, вместо них подставляем числа) командой setpos(x, y)
 | |
| 
 | |
| 3. Опустить перо в нужно точке с помощью команды pendown()
 | |
| ```python
 | |
| import turtle
 | |
| pen = turtle.Pen()
 | |
| 
 | |
| # Первая линия
 | |
| pen.forward(200)
 | |
| pen.penup()
 | |
| pen.setpos(0, 20)
 | |
| pen.pendown()
 | |
| 
 | |
| # Вторая линия
 | |
| pen.forward(200)
 | |
| pen.penup()
 | |
| pen.setpos(0, 40)
 | |
| pen.pendown()
 | |
| 
 | |
| # Третья линия
 | |
| pen.forward(200)
 | |
| pen.penup()
 | |
| pen.setpos(0, 60)
 | |
| pen.pendown()
 | |
| ```
 | |
| Код, приведенный выше рисует три параллельных линии друг над другом.
 | |
| 
 | |
| С помощью команды color() мы можем изменить цвет линий
 | |
| 
 | |
| В команду color() нужно передать цвет
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| pen = turtle.Pen()
 | |
| pen.color('red')
 | |
| 
 | |
| pen.forward(200)
 | |
| 
 | |
| pen.penup()
 | |
| pen.setpos(0, 20)
 | |
| pen.pendown()
 | |
| 
 | |
| pen.color('blue')
 | |
| 
 | |
| pen.forward(200)
 | |
| ```
 | |
| Экспериментируйте! Вот доступные цвета:
 | |
| * red
 | |
| * blue
 | |
| * green
 | |
| * yellow
 | |
| * orange
 | |
| * purple
 | |
| * pink
 | |
| * violet
 | |
| И еще много других цветов
 | |
| 
 | |
| Задачи
 | |
| 
 | |
| 1. Нарисуйте квадрат
 | |
| 
 | |
| 2. Нарисуйте квадрат, у которого каждая сторона имеет свой цвет
 | |
| 
 | |
| 3. Нарисуйте треугольник
 | |
| 
 | |
| 4. Разноцветный треугольник
 | |
| 
 | |
| 5. Много-много параллельных линий
 | |
| 
 | |
| 6. Проявите фантазию, создайте свое неповторимое произведение
 | |
| 
 | |
| # Урок 2
 | |
| 
 | |
| Несколько полезных методов для изменения внешнего вида:
 | |
| 
 | |
| Метод bgcolor получает в качестве аргумента строковую переменную и изменяет цвет фона окна
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold') # Цвет фона будет золотым
 | |
| ```
 | |
| 
 | |
| Метод width изменяет толщину пера. Он принимает в качестве аргумента целое число.
 | |
| 
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5) # Толщина линий станет 5 пикселей
 | |
| ```
 | |
| 
 | |
| Методы pu и pd позволяют поднять и опустить перо. Они используются, когда нам нужно переместить перо с помощью метода setpos.
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.forward(100)
 | |
| p.pu() # Подняли перо
 | |
| p.setpos(-100, -100) # Переместили перо в точку с координатами (-100, -100)
 | |
| p.pd() # Опустили перо
 | |
| ```
 | |
| 
 | |
| Метод cirle рисует окружность. Он принимает в качестве аргумента целое число - радиус окружности в пикселях.
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| p.circle(100) # Окружность с радиусом 100 пикселей
 | |
| ```
 | |
| 
 | |
| Циклы и рисование фигур
 | |
| В прошлой статье мы рисовали квадрат с помощью последовательного перечисления операций. Это совсем неудобно. Есть способ сократить этот код. Для полного понимания прочтите статью про цикл for.
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| for i in range(4): # ОБРАТИТЕ ВНИМАНИЕ, КОМАНДА НА СЛЕДУЮЩЕЙ СТРОЧКЕ ПОСЛЕ
 | |
|     p.forward(100) # ДВОЕТОЧИЯ ИМЕЕТ ОТСТУП В ЧЕТЫРЕ ПРОБЕЛА
 | |
|     p.left(90)
 | |
| ```
 | |
| В примере, приведенном выше я использовал цикл for для повторения двух команд четыре раза. Давайте нарисуем пятиугольник. Я добавлю дополнительную переменную в наш код, в которой буду сохранять количество сторон
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = 5 # Количество сторон
 | |
| for i in range(number_sides): # Повторяем 5 раз
 | |
|     p.forward(100)
 | |
|     p.left(360 / number_sides) # Делаем поворот черепашки на 72 градуса
 | |
| ```
 | |
| Таким образом, мы можем нарисовать пятиугольник. Изменив всего одну переменную, получаем шестиугольник
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = 6 # Поменяли на 6
 | |
| for i in range(number_sides):
 | |
|     p.forward(100)
 | |
|     p.left(360 / number_sides)
 | |
| ```
 | |
| Поэкспериментируйте
 | |
| 
 | |
| Вложенные циклы
 | |
| Мы можем выполнять один цикл в другом, например, нарисовать треугольник с тремя внешними треугольниками:
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = 3 # Поменяли на 6
 | |
| for i in range(number_sides):
 | |
|     p.forward(100)
 | |
|     p.left(360 / number_sides)
 | |
|     for i in range(number_sides): # ОБРАТИТЕ ВНИМАНИЕ, КОМАНДА НА СЛЕДУЮЩЕЙ СТРОЧКЕ ИМЕЕТ
 | |
|         p.forward(50) # ОТСТУП В ЧЕТЫРЕ ПРОБЕЛА
 | |
|         p.right(360 / number_sides)
 | |
| ```
 | |
| Треугольник с квадратами:
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = 3 # Поменяли на 6
 | |
| for i in range(number_sides):
 | |
|     p.forward(100)
 | |
|     p.right(360 / number_sides)
 | |
|     for i in range(4): # Меняем number_sides на 4
 | |
|         p.forward(50)
 | |
|         p.right(360 / 4) # Меняем number_sides на 4
 | |
| ```
 | |
| Больше вложенных циклов!!!!
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = 3 # Поменяли на 6
 | |
| for i in range(number_sides):
 | |
|     p.forward(100)
 | |
|     p.left(360 / number_sides)
 | |
|     for i in range(number_sides):
 | |
|         p.forward(50)
 | |
|         p.right(360 / number_sides)
 | |
|         for i in range(number_sides):
 | |
|             p.forward(20)
 | |
|             p.right(360 / number_sides)
 | |
| ```
 | |
| Прием количества сторон от пользователя:
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| number_sides = int(input()) # Приняли число от пользователя
 | |
| for i in range(number_sides): # ОБРАТИТЕ ВНИМАНИЕ, КОМАНДА НА СЛЕДУЮЩЕЙ СТРОЧКЕ ПОСЛЕ
 | |
|     p.forward(100) # ДВОЕТОЧИЯ ИМЕЕТ ОТСТУП В ЧЕТЫРЕ ПРОБЕЛА
 | |
|     p.left(360 / number_sides)
 | |
| ```
 | |
| Задаем позиции для квадратиков:
 | |
| ```python
 | |
| import turtle
 | |
| p = turtle.Pen()
 | |
| turtle.bgcolor('gold')
 | |
| p.width(5)
 | |
| p.color('dodgerblue')
 | |
| squares = int(input('Введите количество квадратиков: ')) # Приняли число от пользователя
 | |
| for i in range(squares): # Делаем цикл для рисования каждого квадрата
 | |
|     x = int(input('Введите координату х: '))
 | |
|     y = int(input('Введите координату y: '))
 | |
|     p.pu()
 | |
|     p.setpos(x,y)
 | |
|     p.pd()
 | |
|     for k in range(4): # ОБРАТИТЕ ВНИМАНИЕ, КОМАНДА НА СЛЕДУЮЩЕЙ СТРОЧКЕ ПОСЛЕ
 | |
|         p.forward(100) # ДВОЕТОЧИЯ ИМЕЕТ ОТСТУП В ЧЕТЫРЕ ПРОБЕЛА
 | |
|         p.left(90)
 | |
| ```
 | |
| 
 | |
| Задачи
 | |
| 1. Напишите программу, которая принимает от пользователя длину стороны квадрата и рисует его
 | |
| 
 | |
| 2. Напишите программу, которая рисует 5 разноцветных треугольников в различных местах окна (использовать перенос пера с помощью pu, setpos, pd)
 | |
| 
 | |
| 3. Напишите программу, которая принимает от пользователя количество кругов для отрисовки и рисует эти круги в разных местах окна
 | |
| 
 | |
| 4. Напишите программу, которая принимает количество сторон многоугольника, длину стороны многоугольника и рисует его.
 | |
| 
 | |
| 5. Напишите программу, которая принимает количество сторон многоугольника, длину стороны многоугольника и его позицию и рисует его.
 | |
| 
 | |
| 6. Творческое задание: напишите две-три программы использующие максимальное количество полученной от статьи информации. |