Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7615.pdf
Скачиваний:
2
Добавлен:
23.11.2023
Размер:
1.17 Mб
Скачать

Кортежи

Кортежи похожи на списки, за исключением того, что они не могут быть изменены после создания, то есть они неизменяемы (immutable).

В Python кортежи создаются с использованием синтаксиса (..., ..., ...) или даже ..., ...: point = (10, 20)

print(point, type(point)) (10, 20) <class 'tuple'> point = 10, 20

print(point, type(point)) (10, 20) <class 'tuple'>

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

x, y = point

print("x =", x) print("y =", y) x = 10

y = 20

Если мы попытаемся присвоить новое значение элементу в кортеже, мы получим ошибку: point[0] = 20

TypeError Traceback (most recent call last) <ipython-input-86-9734b1daa940> in <module>

----> 1 point[0] = 20

TypeError: 'tuple' object does not support item assignment

Словари

Словари также похожи на списки, за исключением того, что каждый элемент представляет собой пару ключ-значение. Синтаксис словарей: {key1 : value1, ...}: params = {"parameter1" : 1.0,

"parameter2" : 2.0, "parameter3" : 3.0,}

print(type(params))

print(params) <class 'dict'>

{'parameter1': 1.0, 'parameter2': 2.0, 'parameter3': 3.0} print("parameter1 = " + str(params["parameter1"])) print("parameter2 = " + str(params["parameter2"])) print("parameter3 = " + str(params["parameter3"])) parameter1 = 1.0

parameter2 = 2.0 parameter3 = 3.0 params["parameter1"] = "A" params["parameter2"] = "B"

# add a new entry params["parameter4"] = "D"

print("parameter1 = " + str(params["parameter1"]))

14

print("parameter2 = " + str(params["parameter2"])) print("parameter3 = " + str(params["parameter3"])) print("parameter4 = " + str(params["parameter4"])) parameter1 = A

parameter2 = B parameter3 = 3.0 parameter4 = D

Услоаные операторы и табуляция Условные операторы: if, elif, else

Синтаксис Python для условного выполнения кода использует ключевые слова if, elif (else if), else:

statement1 = False statement2 = False

if statement1: print("statement1 is True")

elif statement2: print("statement2 is True")

else:

print("statement1 and statement2 are False") statement1 and statement2 are False

Здесь мы впервые столкнулись со своеобразным и необычным аспектом языка программирования Python: программные блоки определяются уровнем отступа. Сравните с эквивалентным кодом C:

if (statement1)

{

printf("statement1 is True\n");

}

else if (statement2)

{

printf("statement2 is True\n");

}

else

{

printf("statement1 and statement2 are False\n");

}

В C блоки определяются закрывающими фигурными скобками { и }. А уровень отступа (пробел перед операторами кода) значения не имеет (совершенно необязательно).

Но в Python размер блока кода определяется уровнем отступа (обычно это табуляция или, скажем, четыре пробела). Это означает, что мы должны быть осторожны с правильным отступом в нашем коде, иначе мы получим синтаксические ошибки.

Примеры:

statement1 = statement2 = True

if statement1: if statement2:

print("both statement1 and statement2 are True") both statement1 and statement2 are True

# Плохой отступ! if statement1:

15

if statement2:

print("both statement1 and statement2 are True") # эта строка имеет неверный отступ File "<ipython-input-93-ffc4bc2482bd>", line 4

print("both statement1 and statement2 are True") # эта строка имеет неверный отступ

^

IndentationError: expected an indented block

statement1 = False

if statement1:

print("printed if statement1 is True")

print("still inside the if block") if statement1:

print("printed if statement1 is True")

print("now outside the if block") now outside the if block

Циклы

В Python циклы можно запрограммировать разными способами. Наиболее распространенным является цикл for, который используется вместе с итерируемыми объектами, такими как списки. Основной синтаксис:

for циклы: for x in [1,2,3]:

print(x)

1

2

3

Цикл for выполняет итерацию по элементам предоставленного списка и выполняет содержащий его блок один раз для каждого элемента. В цикле for можно использовать любой список. Например:

for x in range(4): # by default range start at 0 print(x)

0

1

2

3

Внимание: range(4) не включает 4 ! for x in range(-3,3):

print(x)

-3 -2 -1 0 1 2

for word in ["scientific", "computing", "with", "python"]: print(word)

scientific computing with python

16

Чтобы перебрать пары ключ-значение словаря: for key, value in params.items():

print(key + " = " + str(value)) parameter1 = A

parameter2 = B parameter3 = 3.0 parameter4 = D

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

for idx, x in enumerate(range(-3,3)): print(idx, x)

0-3

1-2

2-1

30

41

52

Списки: создание списков с использованием циклов for:

Удобный и компактный способ инициализации списков: l1 = [x**2 for x in range(0,5)]

print(l1)

[0, 1, 4, 9, 16] while циклы: i = 0

while i < 5: print(i)

i = i + 1

print("done") 0 1 2 3 4

done

Обратите внимание, что оператор print('done') не является частью тела цикла while изза разницы в отступах.

Функции

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

def func0(): print("test")

func0() test

Необязательно, но настоятельно рекомендуется, мы можем определить так называемую «строку документации», которая является описанием назначения и поведения функций. Строка документации должна следовать непосредственно после определения функции, перед кодом в теле функции.

17

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