Циклы 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