Условный оператор. Ветвление в черепашьей графике (модуль turtle языка Python)

Словарь урока

из модуля turtle:
  • teleport ‒ телепорт
  • forward ‒ вперед
  • right ‒ направо
  • circle ‒ круг, окружность
  • steps ‒ шаги (step ‒ шаг)
  • dot ‒ точка
  • fillcolor ‒ цвет (color) заливки (filling)
  • begin_fill ‒ начать (begin) заполнение (fill)
  • end_fill ‒ конец (end) заполнения (fill)
  • textinput ‒ ввод (input) текста (text)
  • numinput ‒ ввод (input) числа (num, number)
  • minvalue ‒ минимальное (minimum) значение (value)
  • maxvalue ‒ максимальное (maximum) значение (value)
из языка Python:
  • if ‒ если
  • else ‒ иначе
  • elif ‒ сокращение от else (иначе) if (если)
  • int ‒ сокращение от integer (целое число)

Часто в программировании используется так называемый условный оператор, который обеспечивает ветвление, когда часть кода выполняется при одних условиях, а другая ‒ при других. Например, при одном значении переменной будет сделано одно, а при другом ‒ выполнятся совсем другие команды.

Условные операторы относятся к базовым командам самого языка программирования, а не к его модулям и библиотекам.

В программном коде на Python условный оператор может состоять из одной ветки, двух и множества. Сначала рассмотрим простой случай ‒ когда используется только одна ветка условного оператора ‒ ветка if.

f = textinput('Заливка', 'Залить фигуру?')

if f == 'да':
    fillcolor('lightblue')
    begin_fill()

teleport(0, -50)
circle(100)

if f == 'да':
    end_fill()

Здесь круг заливается цветом, если пользователь вводит "да". В остальных случаях круг остается без заливки. Так происходит потому, что связанные с заливкой команды помещены в тела условных операторов.

В заголовке условного оператора проверяется, чему равно значение переменной, в данном случае ‒ f. Два знака равенства ‒ это один из операторов сравнения. Другими являются != (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно).

Команды teleport и circle в нашей программе выполняются всегда. Они находятся в основной части кода, никуда не вложены.

Теперь рассмотрим более сложный пример ‒ условный оператор с двумя ветками:

sides = numinput('Фигура', 'Количество сторон', minval=0, maxval=36)

if sides >= 2:
    sides = int(sides)
    circle(100, steps=sides)
else:
    circle(100)

Если пользователь введет число 0 или 1, то условие sides >= 2 в заголовке условного оператора окажется ложным. В таких случаях срабатывает ветка else условного оператора, если она имеется. В нашем случае в ее теле рисуется обычный круг.

В теле if есть новое для нас выражение: sides = int(sides). В нем значение переменной sides приводится к целочисленному типу с помощью функции int языка программирования Python. После этого уже целое число заново присваивается sides. Такое действия необходимо выполнить потому, что метод numinput возвращает дробное число, даже если было введено целое. Допустим, вы ввели 8, но numinput вернет 8.0. Однако параметр steps метода circle принимает только целые числа. Поэтому нам приходится приводить в соответствие одно с другим.

В Python условный оператор может состоять из множества веток (трех и более). В таких случаях дополнительные ветки создаются с помощью команды elif.

radius = 100
figure = textinput('Фигура', 'круг, квадрат, треугольник, отрезок')

if figure == 'круг':
    circle(radius)
elif figure == 'квадрат':
    right(45)
    circle(radius, steps=4)
elif figure == 'треугольник':
    right(60)
    circle(radius, steps=3)
elif figure == 'отрезок':
    forward(radius * 2)
else:
    write('Вы неправильно ввели название фигуры')

При elif также есть условие, как и при if. Ветки else может не быть. В примере выше тело else срабатывает, когда пользователь ввел что-то не то, и из предыдущих вариантов ничего не подошло.

Задания для самостоятельной работы

  1. Напишите программу, в которой черепаха рисует красную точку в левой части холста или синюю в правой. Координата x точки должна определяться вводом пользователя.
  2. Пользователь вводит длину отрезка. Если она меньше 10 точек или больше 300, программа должна отказываться его рисовать. Иначе спрашивать, вертикальным или горизонтальным он должен быть, и рисовать соответствующий. Подсказка: условный оператор может быть вложен в тело другого условного оператора.

Turtle. Программирование на Python для школьников




Все разделы сайта