Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сгп.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
77 Кб
Скачать
☆

28. Списки и кортежи Python Mobile, примеры.

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

>>> [1, 2, 3]

[1, 2, 3]

>>> [“one”, “two”", “three”]

[“one”, “two”, “three”]

>>>

Первый пример – список четырех целых чисел, а второй – список трех строк. Элементы списков вовсе не обязательно должны быть одного типа. Следующий список содержит строку, целое, вещественное число и другой список:

>>> [“hello”, 5, 2.0, [10, 20]]

[“hello”, 5, 2.0, [10, 20]]

>>>

В Python есть еще один тип данных, называемый кортеж. Он полностью аналогичен списку – за исключением того, что элементы изменять не допускается.

Для того чтобы создать кортеж, необходимо заключить в обычные скобки нужные значения через запятую:

>>> tuple = (“a”, “b”, “c”, “d”, “e”')

>>> len(tuple)

5

>>> tuple[0]

‘a’

>>>

Как видно, можно получить размер кортежа и значение любого элемента по индексу – так же, как и в случае со списком. Однако выражение вида tuple[0]=”z” приведет к ошибке – повторяю, элементы кортежа изменять нельзя.

Таким образом, было рассмотрены понятия список и кортеж. Необходимость изучения была продиктована тем, что эффективное их использование делает программу  элегантной и простой в понимании. К тому же множество функций принимают списки и кортежи в виде аргументов или возвращают их как результат.

29. Управляющие конструкции Python Mobile, примеры.

Функции в Python, как и в любом другом языке программирования, предусмотрены для упрощения работы с часто повторяющимися действиями в программе.

Функция состоит из имени, аргументов и тела, выглядит она так:

def name(arguments):

             тело функции

Как видно, после def указывается имя функции, а в скобках – её аргументы. Если аргументов для функции не предусмотрено, то скобки оставляются пустыми. В конце строки обязательно ставят двоеточие.

При каждом вызове функции выполняются записанные в её тело выражения. Следует отметить, что тело функции надо выделять. В языке программирования Pascal это делают с помощью инструкций begin…end, а в С – с помощью фигурных скобок {…}.

Наберём в интерактивной консоли нашу первую функцию. Сначала вводится “def hello():”. После нажатия на джойстик произойдет переход на новую строку и вместо привычного “>>>” появится приглашение вида “…”. На этой строке необходимо сделать отступ, обычно 4-8 пробелов (однако число пробелов может быть любым). Только затем можно печатать тело функции «print “Hello!”». Если нажать еще раз на джойстик, то снова выйдет приглашение “…”. Так как выражений, принадлежащих функции, больше нет, нажимаем на джойстик. Переход на новую строку без наличия отступа уведомляет интерпретатор о завершении ввода тела функции. Теперь введите “hello()” и нажмите на джойстик, что приведет к выводу в консоль текста “Hello!” (на экране смартфона это выглядит так, как представлено на Рис.1).

Пример:

>>> def hello():

…          print “Hello!”

…

>>> hello()

Hello!

>>>

Наша первая функция не содержала аргументов. Следующий шаг – научиться их использовать!

Пример:

>>> def hello(name):

…          print “Hello”,name,”!”

…

>>> hello(“Albert”)

Hello Albert!

>>>

Или еще один пример, уже с числами:

>>> def summa(a,b):

…          print "a + b =",a+b

…

>>> summa(1,2)

a + b = 3

>>>

Переменные, которые используются в функции, называются локальными. Это означает, что после того, как функция отработала, её переменные попросту уничтожаются. Любопытно, что заданные в функции переменные не конфликтуют с глобальными. Поясним на примере:

>>> c=5

>>> def check():

…          c=10

…          print c

…

>>> check()

10

>>> print c

5

>>>

Как видно, работа с переменной внутри функции никак не сказывается на её однофамильца вне этой функции. В случае, когда внутри функции необходимо использовать глобальные переменные, используется оператор global, за которым следует их список через запятую.

Пример:

>>> pi=3.14

>>> def len(radius):

…          global pi

…          print "Dlina kruga =",pi*radius

…

>>> len(2)

>>> Dlina kruga = 6.28

>>>

Нетрудно представить, что результат работы функции, который был сохранен в переменной, может понадобиться для дальнейшей работы, но после завершения функции, как было сказано, эта переменная будет удалена. Для этого случая предназначена команда return, возвращающая указанные переменные. Пример:

>>> def summa(a,b):

…          c=a+b

…          return c

…

>>> summa(1,2)

3

>>>

В нашем примере функция возвращает “с” в любом случае, однако если вдруг понадобится, в зависимости от каких-либо условий, совершить другое действие? Вот пример с решением проблемы:

>>> def summa(a,b):

…          if a<0:

…              print “Error! a”,a,”< 0”

…              return

…          elif b<0:

…              print “Error! b”,b,”< 0”

…              return

…          else:

…              c=a+b

…              return c

…

>>> summa(1,2)

3

>>> summa(-1,2)

‘Error! -1 < 0’

>>> summa(1,-2)

‘Error! -2 < 0’

>>>

В примере функция summa() успешно возвращает результат, только если оба аргумента больше нуля. Для определения этого используется конструкция if…elif…else и условия.

Начинается конструкция с if, и если условие, записываемое после него, истинно (например, a<0), то выполняется нижеследующий блок выражений (например, print “Error! а”,a,”< 0”). Эта часть конструкции должна присутствовать всегда.

Если условие является ложным, то проверяются все elif. В нашем случае он был один, однако их может быть неограниченное количество и интерпретатор будет проверять их все, пока в каком-либо из них условие не станет истинным. Т.е. если бы параметров было на два больше - def summa(a,b,c,d) - то необходимо было бы дописать еще две elif: >>> def summa(a,b,c,d):

…          if a<0:

…              print “Error! a”,a,”< 0”

…              return

…          elif b<0:

…              print “Error! b”,b,”< 0”

…              return

…          elif c<0:

…              print “Error! c”,c,”< 0”

…              return

…          elif d<0:

…              print “Error! d”,d,”< 0”

…              return

И т.д…

Если же ни в одном из if и elif условие не будет истинно, то выполняется блок выражений, следующий за else. В нашем случае это происходит, только если все аргументы больше нуля. И еще два замечания:

1) команда return может быть использована для выхода в любом месте тела функции, причем даже без аргументов (в этом случае функция по умолчанию возвращает значение None);

2) в зависимости от ситуации, в if и elif могут быть использованы условия проверки “<” для меньше, “>” для больше, “>=” для больше или равно, “<=” для меньше или равно, “==” для равно, “<>” или “!=” для не равно.