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

Функции возвращают значения

Иногда нужно узнать какие числа или другие значения были у функции, когда она работала.

Тогда можно сказать функции, чтобы она ВЕРНУЛА ( return ) это нужное нам значение

Пример. Нарисуем квадрат, вычислим его середину и вернем это значение

#
from turtleru import *
import math

def carre(размер,какой):
#  запомним от какой точки будем рисовать
   т1 = где()
   размерПера(4)
   пероВниз()
   цвет(какой)
# вычислим координаты середины
   хц = размер/2
   уц = размер/2
# нарисуем квадрат
   вперед(размер)
   лево(90)
   вперед(размер)
   лево(90)
   вперед(размер)
   лево(90)
   вперед(размер)
   пероВверх()
# запомним точку центра
   центр = [хц, уц]
   print(центр)

# ВЕРНЕМ ЗНАЧЕНИЕ центр
   return центр
начало()
# Нарисуем квадрат и получим точку центра
# вычислять ее больше не нужно
# центр вычисляет функция carre()
центр = carre(100, "синий");
# поставим черепаху на этот центр
встатьНа(центр) 
пиши(центр)
конец()   

Задача 1. Центр окружности

Написать функцию def circR(radius, color), которая ВОЗВРАЩАЕТ точку центра окружности. Получить эту точку в программе и поставить туда черепаху.

Задача 2 Центр треугольника

Написать функцию def trC(size, color), которая рисует правильный треугольник и возвращает точку центра этого треугольника. Получить эту точку в программе и поставить туда черепаху.

Задача 3 Вписанная окружность

Написать функцию def trOk(size, color), которая рисует правильный треугольник и возвращает радиус вписанной окружности. После работы функции черепаха стоит на половине стороны и повернута по направлению движения.

В основной программе нарисовать вписанную окружность

Задача 4 Описанная окружность

Написать функцию def carre(size, color), которая рисует квадрат и возвращает радиус описанной окружности. После работы функции черепаха стоит в углу квадрата и повернута перпендикулярно диагонали.

В основной программе нарисовать описанную окружность

Условия.

Чтобы выбрать какое действие выполнить есть УСЛОВИЯ

Например. Если размер квадрата равен 0, то не будем его рисовать.

def carre(размер, какой):
        размерПера(4)
   пероВниз()
   цвет(какой)
   if размер == 0:
      пиши("не буду рисовать")
# здесь функция сразу перестанет работать
      return где()
# а это будет выполнять если не 0
   for n in range(4):
      вперед(размер)
      лево(90)
   

Можно сравнить и по-другому

def carre(размер, какой):
        размерПера(4)
   пероВниз()
   цвет(какой)
   if размер >200 :
      пиши("очень большой!")
   for n in range(4):
      вперед(размер)
      лево(90)

Можно и так написать:

def carre(размер, какой):
        размерПера(4)
   пероВниз()
   цвет(какой)
   if 0 < размер  and размер < 200 :
      пиши("правильный!")
   else:
      пиши("плохие размеры")
      return 
   for n in range(4):
      вперед(размер)
      лево(90)

Задача 5 Круг слева

Написать функцию def line(x), которая рисует вертикальную линию с координатой x. Написать функцию def circRight(центр, радиус, х), которая рисует круг, если он будет полностью находится СПРАВА от линии. Если круг находится cлева от линии или пересекает линию, пишет Не буду рисовать. Координаты точки можно написать и так: [x,y], напрмер [100,0] или [-250, 100] и так далее.

Задача 6 Разные квадраты

Функция carre(size, color) рисунт квадрат цвета color. Функция carres(size1, size2, color1, color2) рисует два квадрата цветом color1 и color2. Если цвета совпадают, второй квадрат будет не видно. Маленький квадрат должен быть ВИДЕН НА БОЛЬШОМ.

Напишем функцию так, чтобы поменять красный и желтый цвета:

def carre2(size1,size2,color1,color2):
   if color1 == color2:
      if color1 == "красный":
         color2 = "желтый"
      if color1 == "желтый":
         color2 = "красный"
      carre(size1, color1)
      carre(size2, color2)

Дописать функцию так, чтобы поменять все цвета. Проверить ее работу

Задача 7 Черточки

Написать функцию def dash(size, step), которая рисует черточки размером step на полоске размером size. Цвет черточек меняется: нечетная - красная, четная - зеленая

Задача 8 Вложенные квадраты

Написать функцию def carreInf(size, skolko), которая рисует skolko вложенных цветных квадратов. Размер стороны квадрата каждый раз уменьшается на 20. Если размер становится равен 0, то рисование прекращается. Написать сколько получилось квадратов

вызов взов
carreInf(150,14) carreInf(100,5)

Задача 9 "Шахматная" доска

Написать функцию def chessLine(size, step, firstColor) , которая рисует size/step клеточек размера step чередуя цвета клеток. Функция должна возвращать цвет последнего квдратика.

Написать функцию chessPole(h,w,step) , которая заполняет прямоугольник размером h x w клеточками размера size. При этом цвета должны чередоваться в шахматном порядке

Задача 10. Ветки

Написать функцию def branch(n, size0, dsize, ang0, dang) которая рисует 1 ветку из n отрезков. Первый отрезок длины size0, каждый следующий меньше на dsize. Первый угол поворота налево ang0, каждый следующий больше на dang.

Функция должна возвращать точку, в которой стоит черепаха, после того, как нарисовали половину отрезков ветки.

Чтобы нарисовать этот узор использовали код:

for i in range(3):
   pc = branch(6, 50, 5, 20, 10)     # ветка вверх
   пероВверх()
   встатьНа(pc)
   пероВверх()
   встатьНа(pc)

-- TatyanaOvsyannikova2011 - 24 Apr 2017

Attachment sort Action down Size Date Who Comment
ret1.png manage 2.0 K 24 Apr 2017 - 18:40 TatyanaOvsyannikova2011  
ret2.png manage 2.0 K 24 Apr 2017 - 18:58 TatyanaOvsyannikova2011  
ret3.png manage 2.4 K 24 Apr 2017 - 19:05 TatyanaOvsyannikova2011  
ret4.png manage 2.0 K 24 Apr 2017 - 19:19 TatyanaOvsyannikova2011  
if1.png manage 3.5 K 24 Apr 2017 - 19:38 TatyanaOvsyannikova2011  
if2.png manage 4.0 K 24 Apr 2017 - 19:44 TatyanaOvsyannikova2011  
if3.png manage 3.1 K 24 Apr 2017 - 20:04 TatyanaOvsyannikova2011  
if4.png manage 3.4 K 24 Apr 2017 - 20:08 TatyanaOvsyannikova2011  
ifz21.png manage 2.6 K 25 Apr 2017 - 13:53 TatyanaOvsyannikova2011  
ifz1.png manage 0.8 K 25 Apr 2017 - 14:17 TatyanaOvsyannikova2011  
ifdash.png manage 0.8 K 25 Apr 2017 - 15:57 TatyanaOvsyannikova2011  
carreinf.png manage 1.8 K 25 Apr 2017 - 16:24 TatyanaOvsyannikova2011  
carreinf2.png manage 1.3 K 25 Apr 2017 - 16:25 TatyanaOvsyannikova2011  
lp1.png manage 81.9 K 26 Apr 2017 - 09:43 TatyanaOvsyannikova2011  
lp2.png manage 64.5 K 26 Apr 2017 - 09:43 TatyanaOvsyannikova2011  
chess.png manage 2.1 K 26 Apr 2017 - 09:43 TatyanaOvsyannikova2011  
branch.png manage 1.8 K 06 Jun 2017 - 11:24 TatyanaOvsyannikova2011