Раздел «Язык Си».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 otr(size1, size2):
  # попробуем size2
   новыйОтрезок = size2
   while( size1 % остаток != 0 or size2 % остаток != 0):
      # если size1 и size2 не делится на новыйОтрезок
      # уменьшаем его на 1
      остаток = остаток - 1
      print("size2=",size2)
# возвращаем полученный отрезок 
   return size2

# для двух других
# Алгоритм Евклида

def evcl(size1,size2):
# проверяем делится ли size1 на size2
   while( size1 % size2 != 0):
# если не делится, то ищем остаток от деления
     print("size1=",size1)
     print("size2=",size2)
 # найдем новый остаток:
     остаток = size1 % size2
     print("остаток=",остаток)
     size1 = size2 
     size2 = остаток      


# вернем размер линии
   return size2

начало()

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

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

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

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

Составить два квадрата из САМОГО БОЛЬШОГО квадрата

Нарисовать два квадрата со сторонами size1 и size2. Найти САМЫЙ БОЛЬШОЙ квадрат, из которого можно составить и первый (size1), и второй (size2) квадараты. Напечатать размер на "черном" экране (print).

Написать функцию def kv_line(point,size, n), которая рисует полоску из n квадратов размера size начиная с точки point

Написать функцию def kv_fill(point,size, n,m), которая рисует m полосок (def kv_line(point,size, n)) из n квадратов размера size начиная с точки point

Нарисовать как из нового квадарата можно составить первый и второй квадраты:

Найти квадрат для прямоугольника

Нарисовать прямоугольник со сторонами size1 и size2.

Найти САМЫЙ БОЛЬШОЙ квадрат, из которого можно сложить этот прямоугольник.

Напечатать размер на "черном" экране (print).

Нарисовать как из нового квадарата можно составить этот прямоугольник (использовать функцию def kv_fill(point,size, n,m)):

Найти квадрат для двух прямоугольников

Нарисовать один прямоугольник со сторонами size1 и size2 и второй прямоугольник со сторонами size3 и size4.

Найти САМЫЙ БОЛЬШОЙ квадрат, из которого можно сложить оба этих прямоугольника.

Напечатать размер на "черном" экране (print).

Нарисовать как из нового квадарата можно составить этоти прямоугольники (использовать функцию def kv_fill(point,size, n,m)):

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

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

Числа, из которых получается такая пирамида называются треугольными (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 down 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  
kv22.png manage 23.7 K 28 May 2018 - 07:09 TatyanaOvsyannikova2011  
pryam1.png manage 24.6 K 28 May 2018 - 07:09 TatyanaOvsyannikova2011  
pryam3.png manage 25.3 K 28 May 2018 - 13:34 TatyanaOvsyannikova2011