Append clear copy count extend



Лабораторная работа № 1

Методичка по языку PYTHON-3

Python – интерпретируемый язык программирования. Интерпретатор специальная программ которая выполняет программу построчно.

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

Типы данных

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

Самые важные типы:

1. Числовые: целые, дробные, вещественные с плавающей точкой, комплексные.

2. Логические: тип для хранения значений алгебры логики – «истина» или «ложь».

3. Строковые: содержат символы Юникода.

4. Списки – упорядоченные массивы переменных.

5. Кортежи – массив упорядоченных констант, т.е. значений, которые не могут изменяться в процессе работы.

6. Множества – массивы неупорядоченных данных.

7. Словари – специализированный массив, состоящий из пары – «ключ» — «значение».

Имена

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

Комментарии

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

Особенности синтаксиса:

· Комментарий начинается с символа «#».

· Строковые данные (текст) заключаются в кавычки. Причем, они могут быть любыми – одинарными или двойными. Главное, чтобы выбранная пара относилась к одному типу.

Комментарии могут располагаться в отдельных строках или рядом с операторами, например:

# Это комментарий

S = a + 50 #  комментарий, сумма увеличивается на 50

Библиотеки (программы)

Два модуля из стандартной библиотеки:

math – математические функции

random – генерирование (создание) псевдослучайных чисел

Ввод и вывод данных

Для ввода данных в программу (с клавиатуры) используют функцию input ().

Для вывода на экран (дисплей) значений в Питоне есть функция print (имя).

a = input()              # введем текст: студент

b = input()                 # введем свою фамилию: ФИО

s = a + b

print (s)

Программа выводит студент ФИО.

Задание 1

Загружаем программу IDLE PYTHON из кнопки ПУСК или с рабочего стола

1

В строке >>> набираем нашу программу, приведенную выше. После первой строчки вводим текст студент, после второй строчки вводим свою фамилию. После каждой строчки нажимаем клавишу “Ввод”.

Задание 3

В строке >>>набираем команды:

>>> print (2021 * 365)

>>> print (202100 * 36500)

>>> print (1234567890 * 9876543210)

Не забываем нажать клавишу ВВОД (ENTER) после ввода команды.

Задание 4

Вычислим дискриминант квадратного уравнения.

Пусть дано уравнение x2 – 21x + 320 = 0, т. е. а = 1, b = -21, c = 320.

Задаем значения a, b и с. Вычисляем дискриминант и выводим на экран.

>>>  а = 1

>>> b = -21

>>> c = 320

>>> d = b * b – 4 * a * c

>>>  print (d)

Каждый объект (переменная, имя) относится к какому-то типу. Строки хранятся в объектах типа str, целые числа хранятся в объектах типа int, дробные числа (вещественные числа) — в объектах типа float. Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных a и b объекты типа int (a = 4), то их можно перемножить, а если в них лежат объекты типа str (s = ‘name’), то выполнять арифметические операции с ними нельзя.

Функция print () выводит через пробел данные (если переменных несколько), после чего ставит перевод строки. Если использовать параметры end=’’ (окончание), вывод будет продолжен в этой же строке.

print (a, end=' ')

Списки

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

Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:

Prim = [2, 3, 5, 7, 11, 13]

      В списке Prim — 6 элементов, а именно: Prim [0] = 2, Prim [1] = 3, Prim [2] = 5, Prim [3] = 7, Prim[4] = 11, Prim [5] = 13

Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len, например, len (Prim) = 6.

    Рассмотрим несколько способов создания и считывания списков. Прежде всего, можно создать пустой список (не содержащий элементов, длины 0), а в конец списка можно добавлять элементы при помощи метода append. Например, пусть программа получает на вход количество элементов в списке n, а потом n элементов списка по одному в отдельной строке.

       Для списков целиком определены следующие операции: конкатенация списков (сложение списков, т. е. приписывание к одному списку другого) и повторение списков (умножение списка на число). Например:

a = [1, 2, 3]

b = [4, 5]

c = a + b

d = b * 3

print (c, d)

print ([7, 8] + [9])

print ([0, 1] * 3)

В результате список c будет равен [1, 2, 3, 4, 5], а список d будет равен [4,5, 4,5, 4,5].

Задание 5

Создадим свою программу в IDLE.

File à New File à

Набираем 7 строк, далее File à Save As à

Сохраняем свою программу в папке FIO (создаем свою папку) под именем py01.

Далее нажимаем  Run à Run Module

Результат будет в другом окне

[1, 2, 3, 4, 5] [4, 5, 4, 5, 4, 5]

[7, 8, 9]

[0, 1, 0, 1, 0, 1]

>>>

Будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке.

1111111

Цикл for

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

s = [1, 2, 'a', 3] #   список

s = (1, 2, 'a', 3) #   кортеж

s = ‘12a3’     # строка

for i in s:

print (i) # выводит 1 2 a 3            для всех случаев

 

Функция range

Как правило, циклы for используются либо для повторения какой-либо последовательности действий заданное число раз, либо для изменения значения переменной в цикле от некоторого начального значения до некоторого конечного.

Для повторения цикла некоторое заданное число раз n можно использовать цикл for вместе с функцией range:

for i in range (4): 

# здесь можно выполнять циклические действия

print (i, i ** 2)

В качестве n может использоваться числовая константа, переменная или произвольное арифметическое выражение (например, 2 ** 10). Если значение n равно нулю или отрицательное, то тело цикла не выполнится ни разу.

Функция range может также принимать не один, а два параметра. Вызов range(a,b) означает, что индексная переменная будеть принимать значения от a до b – 1, то есть первый параметр функции range, вызываемой с двумя параметрами, задает начальное значение индексной переменной, а второй параметр — первое значение, которое индексная переменная принимать не будет. Если же a≥b, то цикл не будет выполнен ни разу. Например, для того, чтобы просуммировать значения чисел от 1 до n можно воспользоваться следующей программой:

sum = 0

n = 5

for i in range (1, n + 1):

sum += i

print (sum)

Цикл по всем нечетным числам от 1 до 99 можно при помощи функции range(1, 100, 2), а сделать цикл по всем числам от 100 до 1 можно при помощи range(100, 0, -1).

Более формально, цикл for i in range(a, b, d) при d > 0 задает значения индексной переменной i = a , i = a + d, i = a + 2 * d и так для всех значений, для которых i < b. Если же d<0, то переменная цикла принимает все значения i > b.

a = [ ]     #  заводим пустой список

n = int (input()) # считываем количество элемент в списке

for i in range(n): 

new = int (input()) # считываем очередной элемент

a.append(new) # добавляем его в список

# последние две строки можно было заменить одной:

# a.append (int (input()))

print(a)

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

 

Цикл while

Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

Синтаксис цикла while в простейшем случае выглядит так:

while условие:

блок инструкций

При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while. Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.

Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for ... in range(...):

i = 1

while i <= 10:

print(i ** 2)

i += 1

В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11, поскольку именно при i == 11 условие i <= 10 впервые перестанет выполняться.

Вот еще один пример использования цикла while для определения количества цифр натурального числа n:

n = int(input())

length = 0

while n > 0:

n //= 10 # это эквивалентно n = n // 10

length += 1

print (length)

В этом цикле мы отбрасываем по одной цифре числа, начиная с конца, что эквивалентно целочисленному делению на 10 (n //= 10), при этом считаем в переменной length, сколько раз это было сделано.

В языке Питон есть и другой способ решения этой задачи: length = len(str(i)).

Управления циклом

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

i = 1

while i <= 10:

print(i)

i += 1

else:

print ('Цикл окончен, i =', i)

Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break. Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. При этом ветка else исполняться не будет. Разумеется, инструкцию break осмыленно вызывать только внутри инструкции if, то есть она должна выполняться только при выполнении какого-то особенного условия.

Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).

a = int (input())

while a != 0:

if a < 0:

   print ('Встретилось отрицательное число', a)

   break

a = int (input())

else:

print ('Ни одного отрицательного числа не встретилось')

Во втором варианте программы сначала на вход подается количество элементов последовательности, а затем и сами элементы. В таком случае удобно воспользоваться циклом for. Цикл for также может иметь ветку else и содержать инструкции break внутри себя.

n = int(input())

for i in range(n):

a = int(input())

if a < 0:

   print('Встретилось отрицательное число', a)

   break   

else:

print('Ни одного отрицательного числа не встретилось')

Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.

Если инструкции break и continue содержатся внутри нескольких вложенных циклов, то они влияют лишь на исполнение самого внутреннего цикла. Вот не самый интеллектуальный пример, который это демонстрирует:

for i in range(3):

for j in range(5):

   if j > i:

       break

   print(i, j)

Увлечение инструкциями break и continue не поощряется, если можно обойтись без их использования. Вот типичный пример плохого использования инструкции break (данный код считает количество знаков в числе).

n = int(input())

length = 0

while True:

length += 1

n //= 10

if n == 0:

   break

print ('Длина числа равна', length)

 

Второй вариант:

n = int(input())

length = 0

while n != 0:

length += 1

n //= 10

print ('Длина числа равна', length)

Третий вариант:

n = int(input())

print('Длина числа равна', len(str(n)))

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

a, b = b, a

 

1111111111

 

Приведем два примера, также отличающиеся организацией цикла:

a = [1, 2, 3, 4, 5]

for i in range (len (a)):

print(a[i])

Здесь в цикле меняется индекс элемента i, затем выводится элемент списка с индексом i.

a = [1, 2, 3, 4, 5]

for elem in a:

print (elem, end=' ')

В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной.

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

# дано: s = 'ab12c59p7dq'

# надо: извлечь цифры в список digits,

# чтобы стало так:

# digits == [1, 2, 5, 9, 7]

 

s = 'ab12c59p7dq'

digits = []

for symbol in s:

if '1234567890'.find(symbol) != -1:

   digits.append(int(symbol))

print(digits)

В Питоне можно вывести список строк при помощи однострочной команды. Для этого используется метод строки join. У этого метода один параметр: список строк. В результате возвращается строка, полученная соединением элементов переданного списка в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод.

a = ['red', 'green', 'blue']

print(' '.join(a))

# вернёт red green blue

print(''.join(a))

# вернёт redgreenblue

print('***'.join(a))

# вернёт red***green***blue

Генераторы списков

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

n = 5

a = [0] * n

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

[выражение for переменная in последовательность]

где переменная — идентификатор некоторой переменной, последовательность — последовательность значений, который принимает данная переменная (это может быть список, строка или объект, полученный при помощи функции range), выражение — некоторое выражение, как правило, зависящее от использованной в генераторе переменной, которым будут заполнены элементы списка.

Вот несколько примеров использования генераторов.

Создать список, состоящий из n нулей можно и при помощи генератора:

n = 5

a = [i ** 2 for i in range(n)]

Если нужно заполнить список квадратами чисел от 1 до n, то можно изменить параметры функции range на range(1, n + 1):

n = 5

a = [i ** 2 for i in range(1, n + 1)]

Вот так можно получить список, заполненный случайными числами от 1 до 9 (используя функцию randrange из модуля random):

from random import randrange

n = 10

a = [randrange(1, 10) for i in range(n)]

6. Срезы (slices)

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Есть три формы срезов. Самая простая форма среза: взятие одного символа строки, а именно, S[i] — это срез, состоящий из одного символа, который имеет номер i. При этом считается, что нумерация начинается с числа 0. То есть если S = 'Hello', то S[0] == 'H', S[1] == 'e', S[2] == 'l', S[3] == 'l', S[4] == 'o'.

Заметим, что в Питоне нет отдельного типа для символов строки. Каждый объект, который получается в результате среза S[i] — это тоже строка типа str. Номера символов в строке (а также в других структурах данных: списках, кортежах) называются индексом.

Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1. То есть S[-1] = 'o', S[-2] = 'l', S[-3] = 'l', S[-4] = 'e', S[-5] = 'H'.

Или в виде таблицы:

Строка S H e l l o
Индекс S[0] S[1] S[2] S[3] S[4]
Индекс S[-5] S[-4] S[-3] S[-2] S[-1]

Срез с двумя параметрами: S[a:b] возвращает подстроку из b – a символов, начиная с символа c индексом a, то есть до символа с индексом b, не включая его.

Например, S[1:4] = 'ell', то же самое получится если написать S[-4:-1]. Можно использовать как положительные, так и отрицательные индексы, например, S[1:-1] — это строка без первого и последнего символа (срез начинается с символа с индексом 1 и заканчивается индексом -1, не включая его). Срез S[1:5] вернет строку 'ello'

Если опустить второй параметр, то срез берется до конца строки. Например, чтобы удалить из строки первый символ (его индекс равен 0), можно взять срез S[1:]. Аналогично если опустить первый параметр, то можно взять срез от начала строки. То есть удалить из строки последний символ можно при помощи среза S[:-1]. Срез S[:] совпадает с самой строкой S.

Любые операции среза со строкой создают новые строки и никогда не меняют исходную строку. В Питоне строки вообще являются неизменяемыми, их невозможно изменить. Можно лишь в старую переменную присвоить новую строку.

На самом деле в питоне нет и переменных. Есть лишь имена, которые связаны с какими-нибудь объектами. Можно сначала связать имя с одним объектом, а потом — с другим. Можно несколько имён связать с одним и тем же объектом.

Если задать срез с тремя параметрами S[a:b:d], то третий параметр задает шаг, как в случае с функцией range, то есть будут взяты символы с индексами a, a + d, a + 2 * d и т. д. При задании значения третьего параметра, равному 2, в срез попадет каждый второй символ, а если взять значение среза, равное -1, то символы будут идти в обратном порядке. Например, можно перевернуть строку срезом S[::-1].

Операции со списками

Со списками можно легко делать много разных операций.

x in A Проверить, содержится ли элемент в списке. Возвращает True или False
min(A) Наименьший элемент списка
max(A) Наибольший элемент списка
A.index(x) Индекс первого вхождения элемента x в список, при его отсутствии генерирует исключение ValueError
A.count(x) Количество вхождений элемента x в список

Методы

Метод — это функция, применяемая к объекту, в данном случае — к строке. Метод вызывается в виде Имя_объекта.Имя_метода(параметры).

Метод find

Например, S.find("e") — это применение к строке S метода find с одним параметром "e".

S = 'Hello'

print (S.find('e'))  # вернёт 1

print (S.find('ll')) # вернёт 2

Метод replace

Метод replace заменяет все вхождения одной строки на другую.

Формат: S.replace (old, new) — заменить в строке S все вхождения подстроки old на подстроку new. Пример:

S = ‘1 f 2 f 3 a 4 f’

S.replace (‘f’, ‘a’)              #  получится строка ‘1 a 2 a 3 a 4 a’

    Если методу replace задать еще один параметр: S.replace (old, new, num), то заменены будут не все вхождения, а только не больше, чем первые num из них.

Метод count

Подсчитывает количество вхождений одной строки в другую строку. Простейшая форма вызова S.count(T) возвращает число вхождений строки T внутри строки S. При этом подсчитываются только непересекающиеся вхождения, например:

print ('Abracadabra'.count('a')) # вернёт 4

print (('aabcaabbcc').count('aa'))    # вернёт 2

При указании трех параметров S.count (T, a, b), будет выполнен подсчет числа вхождений строки T в срезе S[a:b].

Методы STR

'center', 'count', 'find', 'format', 'index', 'join', 'lower', 'replace', 'split', 'title', 'translate', 'upper'

Методы LIST

append clear copy count extend

Вычисления

Библиотека math

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

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

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

import math

x = math.ceil (147/17) 

print (x) # 9

Функция Описание

Округление

int(x) Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math.
round(x) Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
abs(x) Модуль (абсолютная величина). Это — стандартная функция.

Корни, логарифмы

sqrt(x) Квадратный корень. Использование: sqrt(x)
log(x) Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b.
e Основание натуральных логарифмов e = 2,71828...

Тригонометрия


Дата добавления: 2021-11-30; просмотров: 26; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!