- Функции, возвращающие значения
- Функции с аргументами. Ничего не возвращают.
- return - вернуть значение из функции. Из Цельсия в Фаренгейты
- Задача 3. Градусы Цельсия в Фаренгейты
- Пример 4. Рисуем часть круга
- Задача 4a. Рисуем половину круга
- Задача 4b. Рисуем полный круг
- Пример 5. Центр квадрата
- Задача 6. Центр квадрата
- Задача 7. Центр круга
- Пример 8. Середина квадрата - когда с математикой плохо
- Пример 9. Точка и линия
- Пример 10. Середина горизонтального отрезка
- Задача 11. Середина отрезка
- Задача 12. Середина прямоугольника
- Задача 13. Центр треугольника
- Задача 14. Вписанная окружность
- Задача 8. Описанная окружность
- Пример 15. Рисуем узор
- Задача 16. Узор
Функции, возвращающие значения
Функции с аргументами. Ничего не возвращают.
Мы использовали функции с аргументами. Например, функция sq(size, col) рисует квадрат со стороной size цветом col.Пример 1. Рисуем квадрат sq(size, col)
import turtle t = turtle.Turtle() t.shape('turtle') t.width(5) def sq(size, col): t.color(col) for i in range(4): t.fd(size) t.lt(90) # вызов функции sq(200, 'blue') turtle.done()
return - вернуть значение из функции. Из Цельсия в Фаренгейты
В математике функции не только получают аргументы, но и возвращают значения.y = sin(x) # функция синус, аргумент х, вернула значение (число)
Пример 2. Переводим из градусов Цельсия в градусы Фаренгейта
Чтобы что-то вернуть, используют специальное слово return. Функция farh(c) переводит из градусов Цельсия в градусы Фаренгейта.- аргумент - градусы Цельсия.
- возвращает значение - градусы Фаренгейта.
#рисовать ничего не будем, черепаха не нужна # функция принимает градусы Цельсия и возвращает градусы Фаренгейта def farh(c): res = c * 9 / 5 + 32 # считаем результат return res # возвращаем результат # Напечатаем таблицу для перевода из градусов Цельсия в Фаренгейты от -50 до 50 с шагом 10 градусов Цельсия cel = -50 # сначала -50 градусов Цельсия while cel <= 50: # пока градусы Цельсия не больше 50 f = farh(cel) # функция farh возвращает число, записываем его в переменную f print(cel, f) cel += 10 # увеличить градусы Цельсия
-50 -58.0 -40 -40.0 -30 -22.0 -20 -4.0 -10 14.0 0 32.0 10 50.0 20 68.0 30 86.0 40 104.0 50 122.0
Задача 3. Градусы Цельсия в Фаренгейты
Перепишите код программы. Запустите его. Измените программу так, чтобы она читала 1 число (градусы Цельсия) и печатала сколько это градусов по Фаренгейту.Пример 4. Рисуем часть круга
Нарисуем график функции отрезками. Будем изменять x и вычислять y. Для вычисления y будем использовать функцию. Назовем ее func. Уравнение, которое описывает окружность радиусом R с центром в точке (0,0):x*x + y*y = R*R
y = sqrt(R*R - x*x)
import turtle import math t = turtle.Turtle() t.width(5) # перемещаемся в точку (x,y), ничего не рисуем. def moveto(x, y): t.pu() t.goto(x, y) t.pd() # функция, которая вычисляет y по заданным x и r # y*y + x*x = r*r => y = sqrt(r*r - x*x) def func(r, x): y = math.sqrt(r*r - x*x) return y def krug(r): dx = r / 20 # будем рисовать 20 отрезков x = r # начинаем с x = r и идем к х = 0 moveto(x, 0) # встаем в начало рисования t.color('blue') while x >= 0: y = func(r, x) # вычисляем y по х t.goto(x, y) # рисуем следующий отрезок x -= dx # вычисляем следующую координату х r = int(input()) krug(r) turtle.done()

Задача 4a. Рисуем половину круга
Исправить пример так, чтобы рисовать половину круга радиуса r с центром в (0,0).
Задача 4b. Рисуем полный круг
Исправить пример так, чтобы рисовать круга радиуса r с центром в (0,0). Верхнюю половину рисовать синим, нижнюю красным.
Пример 5. Центр квадрата
Иногда нужно узнать какие числа или другие значения были у функции, когда она работала. Тогда можно сказать функции, чтобы она ВЕРНУЛА ( return ) это нужное нам значение Пусть черепаха стоит в точке (0,0) и смотрит на восток. Надо нарисовать функцией sq(size) квадрат и вернуть точку (центр квадрата). Потом поставить черепаху в эту точку.
import turtle import time def write(data): t.write(data, font=("Arial", 14, "normal")) def moveto(p): t.pu() t.goto(p) t.pd() write(p) t.dot(10) def sq(size, col): t.color(col) # нарисуем квадрат for i in range(4): t.fd(size) t.left(90) # вычислим координаты середины xc = size/2 yc = size/2 centr = (xc, yc) # запомним точку центра return centr # ВЕРНЕМ ЗНАЧЕНИЕ центр t = turtle.Turtle() t.shape("turtle") t.width(3) pc = sq(100, "blue") # Нарисуем квадрат и получим точку центра pc # вычислять ее больше не нужно # pc вычисляет функция sq t.color('red') moveto(pc) # поставим черепаху на этот центр write(pc) turtle.done()
Задача 6. Центр квадрата
Программа работает хорошо, если черепаха в начале стоит в точке (0,0). Функция неправильно вычисляет центр квадрата, если мы начинаем не из позиции (0,0). Исправьте функцию, чтобы она могла вычислять центр квадрата, который рисуют из любой точки. Направление черепах - на восток. Чтобы получить x и y координаты черепахи используют функцииx = t.xcor() # получить координату х y = t.ycor() # получить координату y t.write((x,y)) # написать координаты точки. НУЖНЫ СКОБКИ.
Задача 7. Центр круга
Функция t.circle(radius) рисует окружность радиусом radius из той точки, где стоит черепаха. Черепаха смотрит на восток. Напишите функцию krug(r), которая рисует окружность радиусом r и ВОЗВРАЩАЕТ точку центра окружности. Поставьте туда черепаху.
p = krug(150, 'blue') moveto(p) write(p)
Пример 8. Середина квадрата - когда с математикой плохо
Если не получаются формулы, можно в функции запомнить точку и вернуть ее.import turtle import time def write(data): t.write(data, font=("Arial", 14, "normal")) def moveto(p): t.pu() t.goto(p) t.pd() write(p) t.dot(10) def sq(size, col): t.color(col) # нарисуем квадрат for i in range(4): t.fd(size) t.left(90) p0 = t.pos() # запомним, где стояли t.pu() # пойдем в середину квадрата t.fd(size/2) t.lt(90) t.fd(size/2) t.rt(90) centr = t.pos() # ЗАПОМНИМ точку центра t.goto(p0) # вернемся в начальную точку return centr # ВЕРНЕМ ЗНАЧЕНИЕ центр t = turtle.Turtle() t.shape("turtle") t.width(3) pc = sq(100, "blue") # Нарисуем квадрат и получим точку центра pc # вычислять ее больше не нужно # pc вычисляет функция sq t.color('red') moveto(pc) # поставим черепаху на этот центр write(pc) turtle.done()
Пример 9. Точка и линия
Напишем функции.- coord() пишет текущие координаты на рисунке
- dot(x, y) рисует точку с координатами (x,y).
- line(x1, y1, x2, y2) рисует отрезок от точки (x1,y1) до точки (x2, y2)
- Прочитать 2 точки. Нарисовать по ним отрезок синим цветом.
- Прочитать 1 точку. Нарисовать красную точку.
-200 0 100 150 -200 150

import turtle def write(data): t.write(data, font=("*Sans", 14, "normal")) def coord(): write(t.pos()) def moveto(x, y): t.pu() t.goto((x, y)) t.pd() write((x, y)) t.dot(10) def line(x1, y1, x2, y2): t.pu() t.goto((x1, y1)) t.pd() write((x1, y1)) t.goto((x2, y2)) write((x2, y2)) t = turtle.Turtle() t.shape('turtle') t.width(3) x1, y1 = map(int, input().split()) x2, y2 = map(int, input().split()) x0, y0 = map(int, input().split()) t.color('blue') line(x1, y1, x2, y2) t.color('red') moveto(x0, y0) turtle.done()
Пример 10. Середина горизонтального отрезка
Даны x1 и x2. y = 0. Функцией middle(x1, s2) нарисовать отрезок от x1 до x2, вернуть его середину. Потом поставить туда черепаху.
xc = x1 + d/2 = x1 + (x2-x1)/2 = (2*x1 + x2-x1) / 2 = (x1+x2)/2
import turtle def write(data): t.write(data, font=("Arial", 14, "normal")) def moveto(p): t.pu() t.goto(p) t.pd() def dot(p): moveto(p) t.dot(10) write(p) def line(x1, y1, x2, y2): moveto((x1, y1)) write((x1,y1)) t.goto(x2, y2) write((x2, y2)) def middle(x1, x2): line(x1, 0, x2, 0) xc = (x1 + x2)/2 # вычислили значение х координаты центра xc centr = (xc, 0) # точка centr с координатами центра отрезка return centr # ВЕРНЕМ ЗНАЧЕНИЕ центр t = turtle.Turtle() t.shape('turtle') t.width(3) t.color('blue') pc = middle(-100, 150) # Нарисуем отрезок [-100, 150] и получим точку центра pc # вычислять ее больше не нужно # pc вычисляет функция middle t.color('red') dot(pc) # поставим точку на этот центр turtle.done()
Задача 11. Середина отрезка
Даны 2 точки. Нарисовать синий отрезок. Поставить красную черепаху на середину отрезка и написать ее координаты. Input:-200 0 100 150

Задача 12. Середина прямоугольника
Даны левая верхняя (left top) и правая нижняя (right bottom) точки. Нарисовать точки красным. Подписать их координаты. Нарисовать прямоугольник синим. Input:-200 150 100 0

Задача 13. Центр треугольника
Для правильного треугольника со стороной a радиус описанной окружности R и радиус вписанной окружности r есть формулы: R = 2r
p = trC(300, 'blue') moveto(p)
Задача 14. Вписанная окружность
Написать функцию trOk(size, color), которая рисует правильный треугольник и возвращает радиус вписанной окружности. После работы функции черепаха стоит на половине стороны и повернута по направлению движения (готова рисовать окружность). В основной программе нарисовать вписанную окружностьr = trOk(300, 'blue') t.circle(r)

Задача 8. Описанная окружность
Написать функцию def sq(size, color), которая рисует квадрат и возвращает радиус описанной окружности. После работы функции черепаха стоит в углу квадрата и повернута перпендикулярно диагонали. В основной программе нарисовать описанную окружностьr = sq(300, 'blue') t.circle(r)
Пример 15. Рисуем узор
Функция part(w, h) рисует часть узора, начиная с точки start и возвращает точку b6.
import turtle import math t = turtle.Turtle() t.width(5) # перемещаемся в точку p, ничего не рисуем. def movetop(p): t.pu() t.goto(p) t.pd() # рисуем линию из точки p1 в точку p2 def linep(p1, p2): movetop(p1) t.goto(p2) def uzor1(w, h): dx = w/5 t.pu() # нижний ряд b1 = t.pos() t.fd(dx) b2 = t.pos() t.fd(dx) b3 = t.pos() t.fd(dx) b4 = t.pos() t.fd(dx) b5 = t.pos() t.fd(dx) b6 = t.pos() t.lt(90) # поворот наверх t.fd(h) t.lt(90) t6 = t.pos() # верхний ряд t.fd(dx) t5 = t.pos() t.fd(dx) t4 = t.pos() t.fd(dx) t3 = t.pos() t.fd(dx) t2 = t.pos() t.fd(dx) t1 = t.pos() t.lt(90) # поворот вниз t.fd(h) t.lt(90) t.pd() linep(b1, b2) # нижний ряд linep(b3, b4) linep(b5, b6) linep(t1, t2) # верхний ряд linep(t3, t4) linep(t5, t6) linep(b1, t3) # //// linep(b2, t4) linep(b3, t5) linep(b4, t6) linep(t1, b3) # \\\\ linep(t2, b4) linep(t3, b5) linep(t4, b6) return b6 def dummy(w, h): t.fd(w) p = t.pos() t.lt(90) t.fd(h) t.lt(90) t.fd(w) t.lt(90) t.fd(h) t.lt(90) return p t.color('blue') p = uzor1(200, 100) t.color('red') movetop(p) p = uzor1(200, 100) turtle.done()
Задача 16. Узор
С помощью функций, написанных в примере, нарисуйте такой узор:
-- TatyanaDerbysheva - 31 Mar 2020
- четверть круга:
- полукруг:
- полный круг:
- часть узора:
- узор крестиком:
- квадрат:
- отрезок горизонтальный: