i=size
while i>0:
print "#",
i=i-1
print
Который печатает "#" столько раз сколько в переменной size.Часть кода которая повторяется, принято выделять, давать имя (соответствующее функциональности этой части кода) и в дальнейшем, вместо повторения, обращаться к ней по имени. Такие выделения называются функции.
Функция является отдельной частью программы. Это крайне важно понять. Все что происходит у нас в программе, все переменные которые мы определили, все что мы сделали до сих пор, функция об этом не знает ничего. Когда мы вызываем функцию из нашей программы, происходит передача контроля, функция проходит по своему списку команд, и при окончании, вернет управление программе.
Поведение функции можно описать двумя цитатами:
1. Все что происходит в Вегасе, остается в Вегасе.
2. Мавр сделал свое дело, мавр может гулять смело.
В нашем случае, у нас есть код который печатает строку символов.
Но сколько раз функция должна печатать символ?
Функция как мы сказали, существует отдельно от области выполнения программы.
Если в главной программе мы получили от пользователя переменную size, функция о нем ничего не знает. Ей надо об этом рассказать.
Итого, для того чтобы создать функцию, нам надо:
1. Часть кода, список команд, которые выполняют опреденную функцию.
2. Список переменных, которые необходимы для выполнения этой части кода.
3. Имя функции, которое описывает то что функция делает.
Синтакс функции в пайтоне выглядит следующим образом:
def имя_функции(список_переменных):
команда1
команда2
...
Имя функции как обычно латиницей, список переменных передается через запятую: переменная1, переменная2, переменная3.
В нашем примере, у нас есть функция которая печатает символы в строке.
Так ее и назовем - print_symbol_line.
Мы передаем ей одну переменную - сколько раз печатать символ, переменная size.
Итого, в главной программе, вызов функции и передача переменной, будет выглядеть вот так:
print_symbol_line(size)
А определение функции вот так:
def print_symbol_line(size):
i=size
while i>0:
print "#",
i=i-1
print
Вспомним последний пример на прошлом уроке, который печатал квадрат, и выглядел вот так:
size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
j=size
while j>0:
i=size
while i>0:
print "#",
i=i-1
print
j=j-1
И теперь перепишем его используя функцию, получим:
def print_symbol_line(size):
i=size
while i>0:
print "#",
i=i-1
print
size = raw_input("Ukazhite razmer kvadrata")
size = int(size)
j=size
while j>0:
print_symbol_line(size)
j=j-1
Обратите внимание, сначала мы определили функцию, потом началось описание главной программы, которое эту функцию использует.
Домашнее задание:
1. Напишите функцию которая получает число и печатает его квадрат.
2. Напишите функцию которая получает 2 числа, и печатает их сумму.
3. Добавьте в функцию print_symbol_line еще одну переменную, которая будет говорить какой символ печатать (вместо #, хочу *).