Условный оператор. Ветвление в черепашьей графике (модуль turtle языка Python)
Словарь урока
из модуля turtle: |
|
---|---|
из языка Python: |
|
Часто в программировании используется так называемый условный оператор, который обеспечивает ветвление, когда часть кода выполняется при одних условиях, а другая ‒ при других. Например, при одном значении переменной будет сделано одно, а при другом ‒ выполнятся совсем другие команды.
Условные операторы относятся к базовым командам самого языка программирования, а не к его модулям и библиотекам.
В программном коде на 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
срабатывает, когда пользователь ввел что-то не то, и из предыдущих вариантов ничего не подошло.
Задания для самостоятельной работы
- Напишите программу, в которой черепаха рисует красную точку в левой части холста или синюю в правой. Координата x точки должна определяться вводом пользователя.
- Пользователь вводит длину отрезка. Если она меньше 10 точек или больше 300, программа должна отказываться его рисовать. Иначе спрашивать, вертикальным или горизонтальным он должен быть, и рисовать соответствующий. Подсказка: условный оператор может быть вложен в тело другого условного оператора.