Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы работы в Python. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
791 Кб
Скачать

X = ' ' if X == 1:

print('один') elif X == 2:

print('два') elif X == ' ':

print('пусто') else: print(' ??? ')

Знак == означает тождественность. Поскольку переменная

равна ' ', «сработает» второй elif. Результатом работы программы будут строчки:

>>>

пусто

Допускается записывать одну инструкцию в нескольких строках,

Для этого достаточно заключить часть инструкции в пару скобок –

круглых ( ), квадратных [ ] или фигурных { }. if (a == 1 and

b == 2 and c == 3):

print(’x=’, x)

Сокращенные формы условного выражения if/else имеют вид

A = X if <условие> else Y

интерпретатор выполняет выражение X, если <условие>= «истина», иначе выполняется Y. Сравните эквивалентные инструкции:

if y>3:

x=5

 

x=5 if y>3 else 3

 

else:

x=3

 

 

Как уже отмечалось, условные выражения (test…)всегда интерпретируются либо как «истина» (True ), либо как «ложь» (False). Это называется проверкой истинности. Результат проверки определяется следующими правилами:

Любое число, не равное 0, или непустой объект = «истина».

Числа, равные 0, пустые объекты и значение None = «ложь»

Операции сравнения применяются рекурсивно

Операции сравнения возвращают True или False

Логические операторы and и or возвращают истинный или лож-

ный объект-операнд

В Python используются стандартные логические связки:

X and Y, X or Y, not X и т.д. Операции сравнения также имеют общепринятый смысл:

==

Тождественно

5 == 5; в результате будет True

равно

True == False; в результате будет False

 

 

«abc» == «abc»; в результате будет True

!=

Не равно

12 != 5; в результате будет True

11

<>

 

«A» !=

«a»; в результате будет True

Не равно

12 <> 5

в результате будет True.

>

>=

Больше, больше или равно

<

<=

Меньше, меньше или равно

Циклы while, циклы for

Инструкция while является универсальным способом организа-

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

while (условие):

#

двоеточие после условия

набор инструкций #

тело цикла

Интерпретатор продолжает вычислять условное выражение (усло-

вие) в строке заголовка, и снова и снова выполнять вложенные ин-

струкции в теле цикла, пока условное выражение не вернет «ложь».

Допустимо, но не рекомендуется, записывать весь цикл в одну строку.

x = 1

x = 1

x<=5: print(x); x = x+1

while x<=5:

while

print(x)

 

 

x = x+1

 

 

В первом способе, поскольку и print(x) и x=x+1 написаны с одинаковым отступом, они считаются телом цикла.

В своей наиболее общей форме инструкция while состоит из строки заголовка с условным выражением, тела цикла, содержащего одну или более инструкций с отступами, и необязательной части else, которая выполняется, когда управление передается за пределы цикла без использования инструкции break.

while <test>: # Условное выражение test

<statements1> # Тело цикла

else: # Необязательная часть else

<statements2>

Блок else – Выполняется, только если цикл завершился обычным

образом (без использования инструкции break).

Дополнительные инструкции break, continue, pass:

break – Производит переход за пределы всей инструкции цикла.

continue – Переход в начало цикла (в строку заголовка).

pass – Ничего не делает: это пустая инструкция.

12

Пример, выход через break из тела бесконечного цикла: x=5

while True: # условие выполнено всегда x=x+1

print(x, end=' ')

if x==10: break # выход из цикла

В результате мы получим набор чисел: 6 7 8 9 10.

Цикл for является универсальным итератором последовательностей в языке Python: он может выполнять обход элементов в любых

упорядоченных последовательностях (списках).

for переменная in список: #двоеточие обязательно

тело цикла

Циклы for начинаются со строки заголовка, где указывается переменная для присваивания («пробегающая» список), а также сам спи-

сок, то есть объект, обход которого будет выполнен. Самый простой список – это упорядоченная последовательность чисел. Вслед за заго-

ловком следует тело цикла блок инструкций (обычно с отступами),

которые требуется выполнить.

Для создания списков широко используется функция range, яв-

ляющейся одной из встроенных функций Python. Инструкция вида range (N1, N2 [, Step])

создает упорядоченную последовательность целых чисел, от значения

N1 до N2, с заданным шагом Step (по умолчанию Step =1). В част-

ности, инструкция range(N) создает список [0, 1, … , N –1]. Ниже

приводится несколько вариантов её применения:

>>> range(2, 12)

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

>>>range(2, 12, 3) [2, 5, 8, 11]

>>>range(11, 2, -2)

[11, 9, 7, 5, 3]

Таким образом. типичный цикл с целочисленным счетчиком цикла имеет вид

for X in range (N1, N2):

тело цикла

В качестве примера рассмотрим вычисление чисел Фибоначчи:

F(0) =1, F(1) =1, F(n) = F(n–1) + F(n–2). Программа содержит всего 2

строчки (оцените минимализм Python):

13

X,Y,N = 1, 1, 5

for i in range(N+1): print(i,X); X,Y=Y,X+Y

В общем случае, формат записи цикла for имеет вид: for X in <object>:

<statements> # Тело цикла else:

<statements> # Если не встретили ‘break’

В этом цикле переменная X «пробегает» по всем элементам заданного объекта <object>. Например:

Программа

Результат

 

 

Text = "Py*t**ho**n"

 

for Z in Text:

Python

if Z=='*': continue

 

print(Z, end=''))

 

for X in (1.5, -2.5, 3, -2, 8.3):

 

if X<0: break

–2.5

else: X="все числа положительны"

 

print(X)

 

Первая программа очищает заданное слово от символов «звездочка», вторая программа ищет первое отрицательное число в последовательности, или сообщает, что таких чисел нет.

14

3. Математические функции. Модули math и random

Для того, чтобы использовать в вычислениях стандартные математические функции (тангенс, логарифм и т.д.) необходимо выполнить подключение специальной библиотеки таких функций, которая называется модулем. Это модуль входит в так называемую коллекцию

«Модули стандартной библиотеки», которая обеспечивает поддерж-

ку распространенных задач программирования. Она поставляется со стандартным пакетом Python и является платформо-независимой.

Модули подключаются специальной инструкцией import, ко-

торую желательно располагать в самом верху программы. Например, инструкция import math подключает стандартный математический пакет. После подключения программа получает доступ ко всем функ-

циям, методам и классам, содержащимся в нём.

Программист может вызвать любую функцию из подключенной

библиотеки, используя перед именем функции префикс с именем мо-

дуля. Пример:

>>>import math

>>>math.pi

3.141592653589793

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

Использование псевдонимов. Если название модуля слишком длинное, или по каким-то другим причинам, то для него можно создать «псевдоним», с помощью ключевого слова as.

>>>import math as m

>>>m.e

2.718281828459045

Теперь доступ ко всем атрибутам модуля math осуществляется только с помощью префикса m. Однако, если после этого снова написать import math, тогда функции модуля будут доступны как под именем m, так и под именем math.

Инструкция from. При необходимости, можно подключить не весь модуль, а только его часть, воспользовавшись инструкцией from. Например, требуется использовать только пару функций из библиоте-

ки math, а вся библиотеку, содержит более 40 функций, которые бу-

15

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

from <имя модуля> import <список функций> Например:

>>>from math import pi,e

>>>pi

3.141592653589793

>>> e

2.718281828459045

Если после инструкции import написать символ звёздочки (*), то

есть написать, например, from math import * , подключится все содержимое модуля (при этом префикс не требуется).

Импорт через from требует аккуратности – в программе не должно быть идентификаторов, совпадающих с именем одной из импортируемых функций или констант, иначе возникнет «путаница».

Модуль math содержит расширенный набор основных матема-

тических функций. В таблице ниже приведен список имен наиболее популярных из таких функций, смысл которых достаточно очевиден из их названия. При этом аргументы тригонометрических функций, естественно, берутся в радианах, sqrt, как всегда, – корень квадратный.

cos(X)

acos(X)

fabs(X)

e

log(X)

sin(X)

asin(X)

degrees(X)

exp(X)

log10()

tan(X)

atan(X)

radians(X)

cosh(X)

log2(X)

pi

pow(X, n)

factorial(n)

sinh(X)

log(X, b)

Список всех функций модуля можно получить через инструкцию help, в данном случае через help(math)или help("math"). Также

можно получить и справочную информацию о конкретной функции,

например: help(math.sin) или help('math.sin').

Кроме того, в модуле имеется набор функций для преобразования чисел и осуществления над ними математических операций, в частно-

сти, ceil()– округление числа «вверх», floor() – округление

числа «вниз» и т.д.

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

16

import math

from math import *

# возведение 2 в степень 3

# возведение 2 в степень 3

n = math.pow(2, 3)

n = pow(2, 3)

print(n) #ответ 8

print(n)

#ответ 8

# косинус 60 градусов

# косинус 60 градусов

x=math.cos(math.radians(60))

x = cos(radians(60))

print(x)

print(x)

 

Модуль cmath. Аналогом модуля math для комплексных чисел является модуль cmath. Например:

>>>import cmath

>>>cmath.sqrt(-1)

1j

>>>cmath.exp(1j*cmath.pi/2) (6.123233995736766e-17+1j)

Последнее выражение вычисляет exp(j π/2), которое теоретически

должно равняться j, то есть мнимой единице.

Модуль random содержит различные варианты генератора слу-

чайных чисел (ГСЧ). Простой ГСЧ при каждом обращении возвращает некоторое число, выбранное случайным образом из заданного множества чисел. Вероятность появления конкретного числа определяется типом ГСЧ. Например, для задачи типа «орел – решка» генератор при каждом вызове должен с одинаковой вероятностью выбрасывать либо ноль, либо единицу. В языках высокого уровня ГСЧ обозначается словом random (англ. случайный), или аббревиатурой от этого слова. В частности, случайное число можно X можно получить с помощью одного из вариантов кода:

import random

from random import *

X=random.random()

X= random()

print(X);

print(X);

В таблице ниже приведен список наиболее популярных функций, модуля random. Список всех функций модуля можно получить с по-

мощью команды dir(random).

choice(A)

возвращает случайный элемент из списка A

random()

возвращает вещественное случайное число, рав-

номерно распределенное на отрезке [0, 1]

 

uniform(a,b)

то же, но для отрезка [a, b]

17

randint(n,m)

возвращает случайное целое число в диапазоне от

n до m

gauss(x,Dx)

возвращает вещественное случайное число, рас-

пределенное по Гауссу; x – среднее значение,

 

Dx – стандартное отклонение

shuffle(A)

случайно перемешивает значения в списке A

sample(A,n)

возвращает случайную последовательность дли-

ной n из набора A

seed(z)

инициализация ГСЧ. Если z не указано, исполь-

зуется системное время.

 

Пример случайного выбора 5 чисел из набора A:

>>>import random

>>>A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>>print(random.sample(A, 5))

[3, 1, 7, 6, 2]

Комментарии: Синонимом ГСЧ с Гауссовым распределением является функция normalvariate(x,Dx) (нормальное распределе-

ние). С помощью random.seed(…) можно запускать новую или повторять старую случайную последовательность:

from random import * seed(1)

for i in range(10): print(randint(1,20),' ', end='')

print( end='\n\n') for i in range(10):

print(randint(1,20),' ', end='') print( end='\n\n')

seed(1)

for i in range(10): print(randint(1,20),' ', end='')

В результате получим:

 

15

16

13

7

5

19

3

9

4

16

20

4

16

1

13

4

14

1

15

9

8

5

19

3

9

16

 

15

16

13

7

18

4. Типы данных – основные сведения

Python – язык со строгой динамической типизацией. Объявление

типа происходит автоматически, когда переменной присваивается

определенное значение. Это существенно упрощает код, так как не

нужно объявлять тип переменной вручную.

В языках со строгой типизацией (Pascal, Java, и т. п), тип переменной определяется заранее и не может быть изменен. В языках с динамической типизацией (Python, RUBY, VB) тип переменной интерпретируется по виду присвоенного значения. Строгая динамическая типизация не допускает неявного преобразования типа (Python), а нестрогая – позволяет выполнять неявные преобразования типа. Например, в VB можно легко сложить строку '123' и число 456, (то есть запи-

сать '123'+456) и получить строку 123456 [7].

Основными стандартными типами данных в Python являются:

Число (Numbers)

 

Кортеж (Tuple)

 

Строка (String)

 

Словарь (Dictionary)

 

Список (List)

 

Множество (Set)

Среди данных числового типа выделяют следующие: int – целое число, long – длинное целое число, float –, вещественное число с плавающей точкой, complex – комплексное число. Сюда можно отнести и данные логического типа – bool, для приведения других типов данных к булевскому существует функция bool().

Строка (String) – набор символов, которые объявляются между кавычками (парой одинарных, либо двойных), например: x= 'abc'.

Строки являются упорядоченными последовательностями симво-

лов. Доступ к элементам строк можно получить по номеру их распо-

ложения (как к элементам в одномерном массиве по индексам). Нуме-

рация начинается с нуля, а отрицательный индекс означает отсчет от конца строки, длину строки возвращает функция len(…).

X = 'herzen**university'

print(X)

#напечатает herzen**university

print(X[1])

 

#напечатает

e

print('herzen'[-1])

#напечатает

n

print(len(X))

 

#напечатает

18

print(X[1 : 3])

 

#напечатает

er

print(X[8 : ])

 

#напечатает

university

print(X[ : -2])

#напечатает herzen**universi

19

Здесь для выборки группы символов (срезов) использована инструкция X[n1 : n2], где n1,(n2–1) – номера начала и завершения среза.

Отсутствие индекса n1 – срез идет от начала, n2 – срез до конца. Строки также можно писать в тройных кавычках, что удобно при

записи длинных строк в несколько линий:

>>>X = '''herzen- -university'''

>>>print(X) herzen- -university

Объясните, что получится, если вывести строку через >>> X.

Оператор плюс ( + ) соединяет две строки в одну, звездочка ( * ) –

оператор многократного повторения, например:

x= ' Herzen'

#

Herzen university

print(x+' university')

print(2*x)

#

HerzenHerzen

Другие методы работы со строками (X – произвольная строка):

X[n1: n2: h] Срез от n1 до n2–1 включительно, с шагом h.

A in X – возвращает True, если строка A является частью

строки X, или

False – в противном случае.

min(X),

max(X) – возвращает символ строки X с наименьшим

или наибольшим кодом соответственно.

Числа можно преобразовать в строки с помощью функции str.

Например, str(1.2) создаст строку "1.2". Если строка X соответствует стандартной записи числа, то она может быть преобразована в

целое число в помощью функции int(X), а в вещественное – с по-

мощью функции float(X): float('1.5') равен 1.5 (но float('1,5') выдаст ошибку). Символ в Python является строкой единичной длины. Код символа определяется функцией ord(), а

функция chr() возвращает символ по его числовому коду, например: ord("A")=65, chr(50)= '2'.

Полную информацию о строковых методах можно получить с по-

мощью команды help("str") или help(str).

Список (List) представляет собой изменяемую упорядоченную коллекцию элементов, которая может включать в себя какие угодно объекты с каким угодно уровнем вложенности. Объекты в списках отделяются друг от друга с помощью запятой, а сами списки заключают-

ся в квадратные скобки […]. Списки, состоящие из списков, называют вложенными. Например:

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]