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

Циклы while

Можем написать цикл, который САМ РЕШАЕТ когда закончить работу.

#!/local-home/student/Downloads/or/bin/python3
from turtleru import *
import math

# Будем рисовать черточки. Первая - большая,
# вторая меньше, третья - еще меньше и так далее
# Когда размер будет равен 0, перестанем рисовать

def dash_reduce(размер):
   размерПера(3)
   
   цвет("красный")

# Это цикл "с условием"
# Он проверяет условие (как if).
# Только if делает одно действие,
# а while много: пока размер > 0
   while размер > 0:

      пероВниз()
      вперед(размер)
      пероВверх()
      вперед(размер)
      размер = размер - 20
начало()
dash_reduce(100)
конец()

Задача Квадраты.

Самый маленький квадрат (размер) рисуем первым. Все остальные квадраты больше на 20. Написать функцию def квадраты(размер), которая рисует такую картинку. Писать с while.

Функция рисует квадраты пока размер < 300

Задача Круги

Самый большой круг (размер) рисуем первым. Все остальные круги больше на 20. Написать функцию def Круги(размер), которая рисует такую картинку. Писать с while.

Функция рисует круги пока размер > 0

Наибольший общий делитель (НОД).

Есть 2 линии (size1 и size2). Нужно найти такую линию, чтобы из нее можно сделать линию size1 и size2.

Чтобы найти такую линию есть алгоритм Евклида.

HOD(a,b)=HOD(b, a%b). Ищем такие остатки пока a%b != 0.

#!/local-home/student/Downloads/or/bin/python3
from turtleru import *
import math

# Функция ищет наибольший отрезок (линию)
# для двух других
# Алгоритм Евклида

def evcl(size1,size2):
   краска=["синий", "красный", "зеленый", "желтый", "рыжий"]
   nomer = 0
   размерПера(5)
   пероВниз()
   пиши(size1)
   while( size1 % size2 != 0):
# нарисуем две линии:
      пероВниз()
      цвет(краска[nomer%5])
      вперед(size1)
      цвет(краска[(nomer + 1)%5])
      пиши(size2)
      пероВниз()
      вперед(size2)

# найдем новый остаток:
      tmp = size2
      size2 = size1 % size2
      size1 = tmp

# подвинем черепаху вниз
      nomer +=1
      назад(size1)
      право(90)
      пероВверх()
      вперед(30)
      лево(90)

# нарисуем нужную линию и напишем размер
   пероВниз()
   цвет(краска[(nomer+1)%5])
   вперед(size2)
# вернем размер линии
   return size2

начало()

size=evcl1(228,336)
пиши (size)
конец()

Задача Наибольший общий делитель для квадратов

Написать функцию NOD(size1, size2), которая ищет самый большой квадрат, из которого можно СОСТАВИТЬ квадрат size1 и квдарт size2.

Нарисовать все квадраты в центре.

Треугольные числа

Шары (круги) можно сложить в пирамиду:

Числа, из которых получается такая пирамида называются треугольными (1,3,6, 10, 15, 21...).

Можно написать программу, которая рисует такую пирамиду.

#!/local-home/student/Downloads/opt/python3
from turtleru import *
import math

# Закрашенный круг
def colorCircle(size,color):
   цвет("черный",color)
   курс(0)
   пероВверх()
   вперед(size)
   лево(90)
   пероВниз()      
   будемКрасить()
   круг(size)
   заКрасили()
   право(90)
   пероВверх()

# полоска из кругов   
def circleLine(size, color, сколько):
   точка=где()
   for n in range(сколько):
      colorCircle(size, color)
      вперед(size)
# возвращаем точку начала
   return точка

# рисуем пирамиду
def piramide(size, сколько):
   краска=["синий", "красный", "зеленый", "желтый", "рыжий"]
# сколько всего кругов
   nombre = 0
# количество кругов в линии
   nombreLine = 1
   while nombre <= сколько:
# Сначала рисуем 1 круг
      t=circleLine(size, краска[nombreLine%5],nombreLine)
      встатьНа(t)
      курс(240)
      вперед(size*2)
# увеличили количество кругов в линии на 1
      nombreLine +=1
# вычислили сколько всего нарисовали кругов
      nombre +=nombreLine

начало()
piramide(30,10)
конец()

Задача Кирпичная пирамида.

Построить пирамиду из кирпичей.

1. Написать функцию кирпич(size), которая рисует 1 кирпич (рыжий). Стороны кирпича: size и size*2/3.

2. Написать функцию, кирпичП(size, сколько), которая рисует полоску из кирпичей.

3. Написать функцию пирамидаК(size, сколько), которая рисует пирамиду из кирпичей. На первой линии - один кирпич, на второй - 3, на третьей - три и так далее. "Лишние" кирпичи в пирамиду не кладем.

4. Написать функцию склад(size,сколько), которая из всех кирпичей рисует несколько пирамид (чтобы все кирпичи были собраны).

Номера

Можно дать номер размерам шариков: size=[90,15,40]. Тогда size[0] — это 90, size[1] — это 15, size[2] — это 40.

Задача Шарики.

Написать функцию шарики(size, сколько), которая берет НОМЕР размера шарика и проверяет его (if). Если size[n]<0, то шарик зеленый, если size[n]<0, то шарик красный. Размер шарика всегда должен быть больше нуля. Чтобы это сделать, нужна функция math.fabs().

-- TatyanaOvsyannikova2011 - 07 Jun 2017

Attachment sort Action Size Date Who Comment
d_reduce.png manage 0.6 K 07 Jun 2017 - 18:06 TatyanaOvsyannikova2011  
kvadrs.png manage 2.7 K 07 Jun 2017 - 18:23 TatyanaOvsyannikova2011  
hodl1.png manage 3.8 K 07 Jun 2017 - 18:53 TatyanaOvsyannikova2011  
nodline.png manage 4.8 K 07 Jun 2017 - 19:00 TatyanaOvsyannikova2011  
nodkv.png manage 1.9 K 07 Jun 2017 - 19:09 TatyanaOvsyannikova2011  
piramida.png manage 2.8 K 07 Jun 2017 - 19:14 TatyanaOvsyannikova2011  
kirp1.png manage 1.5 K 07 Jun 2017 - 19:44 TatyanaOvsyannikova2011  
kirp.png manage 2.1 K 07 Jun 2017 - 19:44 TatyanaOvsyannikova2011  
shariki.png manage 4.2 K 07 Jun 2017 - 20:11 TatyanaOvsyannikova2011  
krugi.png manage 9.8 K 07 Jun 2017 - 20:15 TatyanaOvsyannikova2011