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

Простые циклы

Цикл - как повторить код много раз.

Пример: квадрат (Без цикла)

Когда мы рисуем квадрат, то повторяем одинаковый код (copy/paste).

# -*- coding: utf-8 -*-

import turtle           
import time

t = turtle.Turtle()
t.shape("turtle")
t.width(3)

t.fd(200)       # повторяем эти строки
t.left(90)      # повторяем эти строки 

t.fd(200)
t.left(90)

t.fd(200)
t.left(90)

t.fd(200)
t.left(90)

turtle.done()

Пример: квадрат (с циклом)

Код, который повторяем, можно записать в цикле.

Повторяем n раз

for i in range(n):
    повторяем эти команды

IDEA! переменная i считает от 0 до n-1.

Рисуем квадрат. Используем цикл.

# -*- coding: utf-8 -*-

import turtle           
import time

t = turtle.Turtle()
t.shape("turtle")
t.width(3)

# до цикла
for i in range(4):
    t.fd(200)       # повторяем эти строки
    t.left(90)      # повторяем эти строки 
# после цикла

turtle.done()

Пример: Лестница

Рисуем лестницу и возвращаемся на старт.
3 ступеньки.
Надо нарисовать 1 ступеньку и повторить 3 раза.
Сначала нужно повернуться, чтобы рисовать первую ступеньку и запомнить точку старта. Это делаем один раз до повторения.
В конце возвращаемся в точку старта. Возвращаемся в точку старта один раз и после повторения.

# -*- coding: utf-8 -*-

import turtle           
import time

t = turtle.Turtle()
t.shape("turtle")
t.width(3)
                    # 1 раз ДО повторения
p0 = t.pos()        # запомнили старт. 
t.seth(90)          # повернулись, чтобы начать рисовать много ступенек

for i in range(3):  # повторяем 3 раза рисунок 1 ступеньки
    t.fd(50)        
    t.right(90)     
    t.fd(50)        
    t.left(90)     

                    # 1 раз ПОСЛЕ повторения
t.up()              # вернулись на место старта
t.goto(p0)                              

turtle.done()

Везде, где можно поставить число, можно использовать переменную.

Напишем лестницу через функцию steps(size, n) - нарисовать n ступенек, размер 1 ступеньки size.

# -*- coding: utf-8 -*-

import turtle           
import time

def steps(size, n):
                        # 1 раз ДО повторения
    p0 = t.pos()        # запомнили старт в переменную p0 
    t.seth(90)          # повернулись, чтобы начать рисовать много ступенек

    for i in range(n):  # повторяем n раза рисунок 1 ступеньки
        t.fd(size)        
        t.right(90)     
        t.fd(size)        
        t.left(90)     

                        # 1 раз ПОСЛЕ повторения
    t.up()              # вернулись на место старта p0
    t.goto(p0)                              

t = turtle.Turtle()
t.shape("turtle")
t.width(3)

steps(50, 3)

turtle.done()

Задача 1: Квадрат

Напишите ФУНКЦИЮ sq(size) для рисования квадрата со стороной size.
В функции используйте for n in range(4) seth.png

Задача 2: Треугольник1

Напишите функцию triangle(size) для рисования равностороннего треугольника со стороной size.
В функции используйте for n in range(3)

seth.png

Изменяем число шагов цикла (число в range())

Задача 3: Черточки

Написать функцию dash(n), которая рисует n черточек.

Получить вот такую картинку
Нарисовать ВСЕ черточки.
seth.png

Задача 4: "Простые" многоугольники

Написать функцию poli(n, size) для рисования n-угольника со стороной size

seth.png

Задача 5: Спираль

Написать функцию spirale(n), которая рисует n отрезков спирали

seth.png

Запомнить и изменить переменные в цикле.

Пример: веер-1

Нарисуем веер из n линий цвета col. Каждая линия будет размера size. Напишем функцию veer(n, col, size)

import turtle           
import time

def veer(n, col, size):
                        # 1 раз ДО повторения
    t.color(col)        # установить цвет

    for i in range(n):  # повторяем n раза рисунок 1 линии
        t.fd(size)        
        t.fd(-size)        
        t.left(30)     


t = turtle.Turtle()
t.shape("turtle")
t.width(3)

veer(6, 'yellow', 100)
t.seth(-15)
veer(7, 'red', 120)

turtle.done()

Пример: веер-2 (размер линий тоже изменяется)

# -*- coding: utf-8 -*-

import turtle           
import time

def veer(n, col, size, d):
                        # 1 раз ДО повторения
    t.color(col)        # установить цвет

    for i in range(n):  # повторяем n раза рисунок 1 линии
        t.fd(size)        
        t.fd(-size)        
        t.left(30)
        size += d       # в цикле изменяем значение переменной size       


t = turtle.Turtle()
t.shape("turtle")
t.width(3)

veer(6, 'yellow', 60, 20)
t.seth(-15)
veer(7, 'red', 50, 20)

turtle.done()

Задача 6: Многоугольники

Задача 6а: функция tri(size, ang)

Напишите функцию tri(size, ang) для рисования равнобедренного треугольника.
size — размер двух равных сторон.
ang — угол между этими сторонами.

Подсказка: Запомнить точки p1 и p2.

for n in range для этой функции не нужен.

seth.png

Задача 6б: функция poligon(size, n)

Написать функцию poligon(size, n) для рисования многоугольника.
size — размер одной стороны
n — количество углов.
Многоугольник нужно составить из треугольников (вызвать функцию tri(size, ang)).

Получить вот такую картинку:

Задача 7: Спираль2

Написать функцию spiral2(n, start_size, delta) для рисования n отрезков спирали.
start_size — размер начального витка,
delta — на сколько меняется размер для каждого нового витка

Получить вот такие картинки:

seth.png

Функции в цикле.

Задача 8: Квадратики

Написать функцию sq(size, col1, col2) для рисования 1 закрашенного квадрата, заданного размера.
Написать функцию sqn(size, n), которая рисует n квадратов в квадрате.
В этой функции внутри цикла использовать функцию sq рисования 1 квадрата

Получить вот такие картинки:

seth.png

Задача 9: Полоски

Пара - это 2 предмета.

Написать функцию polosa(n) для рисования вот такой полоски. n — количество пар квадратиков. Использовать функцию для рисования квадрата.

seth.png

Написать функцию manyP(n,m) для рисования вот такой картинки.
n — размер (пары квадратиков) по горизонтали,
m — размер по вертикали.

seth.png

Задача 10: Как шахматы

Написать функцию chess(n,m) для рисования вот такой картинки.
n — размер (пары квадратиков) по горизонтали,
m — размер (пары линий) по вертикали.

Использовать функцию polosa(n) из задачи Полоски.

seth.png

Задача 11: Луч снежинки.

Написать функцию ray(size, n)=.
size — размер луча,
n количество веток в луче.

Размер самой верхней ветки : sizeOfRay=size/(3*n), размер каждой ветки ниже изменяется так: sizeOfRay *= 2

seth.png

Задача 12: Снежинки (узор)

Написать функцию snee(size, n) для рисования снежинки.
size — размер луча снежинки,
n — количество ветвей на луче.

seth.png

Нарисовать похожий узор. снежинки должны быть разные и чередоваться.

seth.png

Немного о range

Автор: Овсянникова Т.В.