Методическое пособие по курсу Информатика. Python

для студентов второго курса геогафического отделения ИЭ и ур

 

 

Муртузалиева А.А.

ФИиИТ | ДГУ

 


 

Содержание

Лабораторная работа 1 Введение в язык программирования Python

Лабораторная работа 2 Математические операции в Python

Лабораторная работа 3 Структура ветвление в Python

Лабораторная работа 4 Работа с циклами в Python

Лабораторная работа 5 Работа со строками в Python

Лабораторная работа 7 Функции в Python

Лабораторная работа 8. Работа с двумерными массивами (вложенные списки).

Встроенные функции

Ключевые слова

Глоссарий

Литература

python™

Лабораторная работа 1 Введение в язык программирования Python

Цель работы: Познакомиться со средой разработки Python. Изучить основные типы данных, команды ввода и вывода данных.

 

Краткая теория

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

В комплекте вместе с интерпретатором Python идет IDLE (интегрированная среда разработки). По своей сути она подобна интерпретатору, запущенному в интерактивном режиме с расширенным набором возможностей (подсветка синтаксиса, просмотр объектов, отладка и т.п.).

Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и найти там ярлык с именем “IDLE (Python 3.X XX-bit)”.

Для запуска редактора программы (кода) следует выполнить команду File->New File или сочетание клавиш Ctrl+N.

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

Программа включает в себя:

  • комментарии;
  • команды;
  • знаки пунктуации;
  • идентификаторы;
  • ключевые слова.

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

 

https://sites.google.com/site/moiboarkin/_/rsrc/1544965164902/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/1.png?height=213&width=400

Знаки пунктуации

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

Идентификаторы

Идентификаторы в Python это имена, используемые для обозначения переменной, функции, класса, модуля или другого объекта.

Ключевые слова

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

Ключевые слова в Python:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']


Типы данных

1.    None (неопределенное значение переменной)

2.    Логические переменные (Boolean Type)

3.    Числа (Numeric Type)

1.    int – целое число

2.    float – число с плавающей точкой

3.    complex – комплексное число

4.    Списки (Sequence Type)

1.    list – список

2.    tuple – кортеж

3.    range – диапазон

5.    Строки (Text Sequence Type )

1.    str

 

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

Ввод данных осуществляется при помощи функции input(список ввода):

a = input()

print(a)

В скобках функции можно указать сообщение - комментарий к вводимым данным:

a = input ("Введите количество: ")

Команда input() по умолчанию воспринимает входные данные как строку символов. Поэтому, чтобы ввести целочисленное значение, следует указать функцию int():

a = int (input())

Для ввода вещественных чисел применяется функция float()

a=float(input())

Вывод данных осуществляется при помощи команды print(список вывода):

a = 1

b = 2

print(a)

print(a + b)

print('сумма = ', a + b)

Существует возможность записи команд в одну строку, разделяя их через ;. Однако не следует часто использовать такой способ, это снижает удобочитаемость:

a = 1; b = 2; print(a)

print (a + b)

print ('сумма = ', a + b)

Для команды print может задаваться так называемый сепаратор — разделитель между элементами вывода:

x=2

y=5

print ( x, "+", y, "=", x+y, sep = " " )

Результат отобразится с пробелами между элементами: 2 + 5 = 7

Простые арифметические операции над  числами

 

x + y

Сложение

x - y

Вычитание

x * y

Умножение

x / y

Деление

https://sites.google.com/site/moiboarkin/_/rsrc/1545965177719/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/math_prost.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545965249435/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/math_prost_res.png

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

 

 

Для форматированного вывода используется format:

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

Синтаксис команды format:

поле замены        :=  "{" [имя поля] ["!" преобразование] [":" спецификация] "}"

имя поля                :=  arg_name ("." имя атрибута | "[" индекс "]")*

преобразование :=  "r" (внутреннее представление) | "s" (человеческое представление)

спецификация    :=  см. ниже

Аргументов в format() может быть больше, чем идентификаторов в строке. В таком случае оставшиеся игнорируются.

Идентификаторы могут быть либо индексами аргументов, либо ключами:

https://sites.google.com/site/moiboarkin/_/rsrc/1546934867668/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format._prog2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1546934963795/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format2.png

 

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

Или с несколькими аргументами:

https://sites.google.com/site/moiboarkin/_/rsrc/1546934667752/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format._prog.png

https://sites.google.com/site/moiboarkin/_/rsrc/1546934753061/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/ex_format.png

 

В итоге каждое из значений выводится из расчета 4 знакоместа.

Спецификация формата:

спецификация

[[fill]align][sign][#][0][width][,][.precision][type]

заполнитель

символ кроме '{' или '}'

выравнивание

  "<" | ">" | "=" | "^"

знак

  "+" | "-" | " "

ширина

int

точность

  int

тип

"b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

 

 

Тип

Значение

'd', 'i', 'u'

Десятичное число.

'o'

Число в восьмеричной системе счисления.

'x'

Число в шестнадцатеричной системе счисления (буквы в нижнем регистре).

'X'

Число в шестнадцатеричной системе счисления (буквы в верхнем регистре).

'e'

Число с плавающей точкой с экспонентой (экспонента в нижнем регистре).

'E'

Число с плавающей точкой с экспонентой (экспонента в верхнем регистре).

'f', 'F'

Число с плавающей точкой (обычный формат).

'g'

Число с плавающей точкой. с экспонентой (экспонента в нижнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.

'G'

Число с плавающей точкой. с экспонентой (экспонента в верхнем регистре), если она меньше, чем -4 или точности, иначе обычный формат.

'c'

Символ (строка из одного символа или число - код символа).

's'

Строка.

'%'

Число умножается на 100, отображается число с плавающей точкой, а за ним знак %.

 

Для форматирования вещественных чисел с плавающей точкой используется следующая команда:

print('{0:.2f}'.format(вещественное число))

https://sites.google.com/site/moiboarkin/_/rsrc/1546937367233/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/format_real_prog.png

 

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

https://sites.google.com/site/moiboarkin/_/rsrc/1546937383500/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/format_real_res.png

 

 

Пример

Напишите программу, которая запрашивала бы у пользователя:

Вариант 0

- ФИО ( "Ваши фамилия, имя, отчество?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где вы живете?")

После этого выводила бы три строки:

"Ваше имя"

"Ваш возраст"

"Вы живете в"

Решение

https://sites.google.com/site/moiboarkin/_/rsrc/1547130581578/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/string_prog_var0.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547130601822/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-1/string_res_var0.png

 

 

Задания для самостоятельной работы (по вариантам)

 

Напишите программу, которая запрашивала бы у пользователя:

Вариант 1

Имя, Фамилия, Возраст, Место жительства

- фамилия, имя ( "Ваши фамилия, имя?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где вы живете?")

После этого выводила бы три строки:

"Ваши фамилия, имя"

"Ваш возраст"

"Вы живете в"

 

Вариант 2

Имя, Дата рождения, Образование

- имя ("Ваше, имя?")

- дата рождения ("Ваша дата рождения?")

- образование ("Где Вы учитесь?")

После этого выводила бы три строки:

"Ваше имя"

"Дата рождения"

"Вы учитесь в "

 

Вариант 3

Фамилия, Место жительства

- Фамилия( "Ваша фамилия?")

- место жительства ("Где Вы живете?")

После этого выводила бы две строки:

"Ваша фамилия"

"Вы живете в"

 

Вариант 4

Фамилия, Место рождения, любимая музыка

- Фамилия, ("Ваша фамилия?")

- место рождения ("Где Вы родились?")

- музыка("Какая музыка нравится? ")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы родились в"

"Ваша любимая музыка "

 

Вариант 5

Имя, Фамилия, ФИО мамы, ФИО отца

- ФИО (например, "Ваши фамилия, имя, отчество?")

- возраст ("Сколько Вам лет?")

- место жительства ("Где Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия, отчество"

"Ваш возраст"

"Вы живете в"

 

Вариант 6

Имя, Любимый предмет в ВУЗе, год обучения

- имя ( "Ваше имя?")

- любимый предмет ("Какой Ваш любимый предмет в ВУЗе?")

- номер класса ("На каком курсе Вы учитесь?")

После этого выводила бы три строки:

"Ваше имя"

"Ваш любимый предмет в ВУЗе"

"Вы учитесь на курсе "

 

Вариант 8

Имя, Фамилия, Отчество, Хобби

- ФИО (например, "Ваши фамилия, имя, отчество?")

- хобби ("Чем Вы увлекаетесь?")

После этого выводила бы две строки:

"Ваши имя, фамилия, отчество"

"Ваше хобби"

 

Вариант 9

Имя, Фамилия, любимый спорт

- Фамилия, имя ( "Ваши фамилия, имя?")

- образование ("В каком ВУЗе Вы учитесь?")

("На каком отделении Вы учитесь?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы учитесь в  "

"Вы учитесь на отделении "

 

Вариант 10

Имя, Фамилия, Любимый предмет в институте, ФИО куратора

- Фамилия, имя ( "Ваши фамилия, имя?")

- любимый предмет в ВУЗе ("Какой Ваш любимый предмет в ВУЗе?")

- ФИО классного руководителя ("ФИО Вашего классного руководителя?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш любимый предмет в ВУЗе "

"ФИО Вашего куратора"

 

Вариант 11

Имя, Фамилия, Возраст, Дата рождения

- Фамилия, имя ("Ваши фамилия, имя?")

- возраст ("Сколько Вам лет?")

- дата рождения ("Когда Вы родились?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш возраст"

"Дата Вашего рождения"

 

Вариант 12

Имя, Фамилия, Место жительства, Месторождения

- Фамилия, имя ( "Ваши фамилия, имя?")

- место рождения ("Где Вы родились?")

- место жительства ("Где Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы родились в"

"Вы живете в"

 

Вариант 13

Имя, Фамилия, Возраст, Номер телефона

- Фамилия, имя  ("Ваши фамилия, имя?")

- возраст ("Сколько тебе лет?")

- номер телефона ("Номер Вашего телефона?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Ваш возраст"

"Ваш номер телефона"

 

Вариант 14

Имя, Фамилия, Страна, Край , Город

- Фамилия, имя ( "Ваши фамилия, имя?")

- страна ("В какой стране Вы живете?")

- город ("В каком городе Вы живете?")

После этого выводила бы три строки:

"Ваши имя, фамилия"

"Вы живете в стране"

"Вы живете в крае"

"Вы живете в городе"

 

 

 

Список литературы

 

1. https://www.opennet.ru/docs/RUS/python/python_b.html

2. https://metanit.com/python/tutorial/1.1.php

3. https://pythonworld.ru/osnovy

 

 

 

 

 

Лабораторная работа 2 Математические операции в Python

Цель работы: познакомиться с основными математическими операциями в Python

 

Язык Python, благодаря наличию огромного количества библиотек для решения разного рода вычислительных задач, сегодня является конкурентом таким пакетам как Matlab и Octave. Запущенный в интерактивном режиме, он, фактически, превращается в мощный калькулятор. В этом уроке речь пойдет об арифметических операциях, доступных в данном языке Арифметические операции изучим применительно к числам.

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

 

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

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

 

Целые числа (int)

 

Числа в Python 3 поддерживают набор самых обычных математических операций:

 

x + y

Сложение

x - y

Вычитание

x * y

Умножение

x / y

Деление

x // y

Получение целой части от деления

x % y

Остаток от деления

-x

Смена знака числа

abs(x)

Модуль числа

divmod(x, y)

Пара (x // y, x % y)

x ** y

Возведение в степень

pow(x, y[, z])

x : Число, которое требуется возвести в степень.
y : Число, являющееся степенью, в которую нужно возвести первый аргумент. Если число отрицательное или одно из чисел "x" или "y" не целые, то аргумент "z" не принимается.
z : Число, на которое требуется произвести деление по модулю. Если число указано, ожидается, что "x" и "y" положительны и имеют тип int.

 

Пример применения вышеописанных операций над целыми числами

https://sites.google.com/site/moiboarkin/_/rsrc/1547291314000/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/ex_math1.png

 

    Вещественные числа (float)

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам.

Пример применения вышеописанных операций над вещественными числами

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547291478218/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/ex_math2.png


Библиотека (модуль) math

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

Для работы с данным модулем его предварительно нужно импортировать.

https://sites.google.com/site/moiboarkin/_/rsrc/1547052180897/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/4.png

 

Рассмотрим наиболее часто используемые функции модуля math

 

math.ceil(x)

Возвращает ближайшее целое число большее, чем x

math.fabs(x)

Возвращает абсолютное значение числа x

math.factorial(x)

Вычисляет факториал x

math.floor(x)

Возвращает ближайшее целое число меньшее, чем x

math.exp(x)

Вычисляет e**x

math.log2(x)

Логарифм по основанию 2

math.log10(x)

Логарифм по основанию 10

math.log(x[, base])

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

math.pow(x, y)

Вычисляет значение x в степени y

math.sqrt(x)

Корень квадратный от x

 

Пример применения вышеописанных функций над числами

В программе определены 4 переменные - a, b, c, d, каждая из которых является либо целым числом, либо вещественным, либо отрицательным.

Командой print() выводится значение каждой переменной на экран при выполнении программы.

В переменную z помещается результат выполнения функции модуля math.

Затем командой print() выводится сообщение в виде используемой функции и её аргумента и результат её выполнения.

https://sites.google.com/site/moiboarkin/_/rsrc/1545192487069/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/math.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1545192529189/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/math_result.png

Результат выполнения программы с применением функций модуля math

 

Тригонометрические функции модуля math

math.cos(x)

Возвращает cos числа X

math.sin(x)

Возвращает sin числа X

math.tan(x)

Возвращает tan числа X

math.acos(x)

Возвращает acos числа X

math.asin(x)

Возвращает asin числа X

math.atan(x)

Возвращает atan числа X

 

Пример применения вышеописанных функций над числами

В программе определена переменная x, содержащая целое число. 

Значение переменной выводится командой print() на экран. 

В переменную z помещается результат выполнения тригонометрической функции модуля math.

Затем командой print() выводится сообщение в виде используемой функции и её аргумента и результат её выполнения.

https://sites.google.com/site/moiboarkin/_/rsrc/1545193670663/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/sincos.png

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

https://sites.google.com/site/moiboarkin/_/rsrc/1545193738067/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/sincos_result.png

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

 

Константы:

  • math.pi - число Pi.
  • math.e - число е (экспонента).

Пример 

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

Вариант 0 

https://sites.google.com/site/moiboarkin/_/rsrc/1546940520093/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example.png

x=10; t=1

Решение


Сначала импортируем модуль math. Для этого воспользуемся командой import math.
Затем следует ввести значения двух переменных целого типа x и t. 
Для ввода данных используется команда input, но так как в условии даны целые числа, то нужно сначала определить тип переменных: x=int(), t=int().
Определив тип переменных, следует их ввести, для этого в скобках команды int() нужно написать команду input().
Для переменной x это выглядит так: x=int(input("сообщение при вводе значения")).
Для переменной t аналогично: t=int(input("сообщение при вводе значения")).
Следующий шаг - это составление арифметического выражения, результат которого поместим в переменную z.
Сначала составим числитель. Выглядеть он будет так: 9*math.pi*t+10*math.cos(x).
Затем нужно составить знаменатель, при этом обратим внимание на то, что числитель делится на знаменатель, поэтому и числитель и знаменатель нужно поместить в скобки (), а между ними написать знак деления /.
Выглядеть это будет так: (9*math.pi*t+10*math.cos(x))/(math.sqrt(t)-math.fabs(math.sin(t))).
Последним шагом является умножение дроби на экспоненту в степени x.
Так как умножается вся дробь, то следует составленное выражение поместить в скобки (), а уже потом написать функцию math.pow(math.e,x).
В результате выражение будет иметь вид:
z=((9*math.pi*t+10*math.cos(x))/(math.sqrt(t)-math.fabs(math.sin(t))))*math.pow(math.e,x).
При составлении данного выражения следует обратить внимание на количество открывающихся и закрывающихся скобок.
Командой print() выведем значение переменной, отформатировав его командой format.
Сам формат записывается в апострофах в фигурных скобках {}.
В задаче требуется вывести число с двумя знаками после запятой, значит вид формата будет выглядеть следующим образом: {0:.2f}, где 2 - это количество знаков после запятой, а f указывает на то, что форматируется вещественное число. При этом перед 2 нужно поставить точку, указав тем самым на то, что форматируем именно дробную часть числа.

 

https://sites.google.com/site/moiboarkin/_/rsrc/1546941308784/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example_prog.png

 

Результат

https://sites.google.com/site/moiboarkin/_/rsrc/1546941373474/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-2/lab2_example_res.png

 

 Лабораторные задания

Вариант 1

 Вычислить.      и     ;  если          

         x = 2; у = 6; z = 7.

Вариант 2.

Вычислить      и    если   x = 5; у = 1; z = 4.

 

Вариант 3.

Вычислить  и     если    

          x = 1; у = 12; z = 6.

Вариант 4.

Вычислить  и    если   

        x = 11; у = 5; z = 10.

 

Вариант 5.

Вычислить      и       если        

          x = 15; у = 7; z = 3.

Вариант 6.

Вычислить   и     если

 x = 3; у = 4; z = 5.

Вариант 7.

Вычислить   и   если

  x = 5;  у = 3; z = 17.

Вариант 8.

Вычислить  и   если

x = 7; у = 4; z = 8.

Вариант 9.

Вычислить   и  если  x = 17; у = 16; z = 15.

Вариант 10.

Вычислить   и    если  

 x = 6; у = 7; z = 8.

Вариант 11.

Вычислить   и    если  x = 3; у = 4; z = 5.

Вариант 12.

Вычислить   и    если x = 4; у = 5; z = 6.

Вариант 13.

Вычислить  и    если 

x = 5; у = 6; z = 7.

Вариант 14.

Вычислить   и  если  x = 8; у = 9; z = 10.

Вариант 15. 

Вычислить  и ;   если  x = 9; у = 10; z = 11

Вариант 16

Даны a,b,c,x,y. Вычислить

 

Вариант 17

Даны a,b,c,x,y. Вычислить

 

Вариант 18

Даны a,b,c,x,y. Вычислить

 

 

Вариант 19

Даны a,b,c,x,y. Вычислить

 

Вариант 20

Даны a,b,c,x,y. Вычислить

 

 

Вариант 21

Даны a,b,c,x,y. Вычислить

 

Вариант 22

Даны a,b,c,x,y. Вычислить

 

Вариант 23

Даны a,b,c,x,y. Вычислить

 

Вариант 24

Даны a,b,c,x,y. Вычислить

Вариант 25

Даны a,b,c,x,y. Вычислить

Вариант 26

Даны a,b,c,x,y. Вычислить

Вариант 27

Даны a,b,c,x,y. Вычислить

 

Вариант 28

Даны a,b,c,x,y. Вычислить

 

Вариант 29

Даны a,b,c,x,y. Вычислить

Вариант 30

Даны a,b,c,x,y. Вычислить

 

 

 

 

 

 

Лабораторная работа 3 Структура ветвление в Python

Цель работы: познакомиться со структурой ветвление (if, if-else, if-elif-else). Научиться работать с числами и строками используя данную структуру.

Условный оператор ветвления if, if-else, if-elif-else

Оператор ветвления if  позволяет выполнить определенный набор инструкций в зависимости от некоторого условия. Возможны следующие варианты использования.

1. Конструкция if
Синтаксис оператора if выглядит так:
if логическое выражение:
    команда_1
    команда_2
    ...
    команда_n

После оператора if  записывается логическое выражение. 

Логическое выражение — конструкция языка программирования, результатом вычисления которой является «истина» или «ложь».

Если это выражение истинно, то выполняются инструкции, определяемые данным оператором.

Выражение является истинным, если его результатом является число не равное нулю, непустой объект, либо логическое True. После выражения нужно поставить двоеточие “:”.


ВАЖНО: блок кода, который необходимо выполнить, в случае истинности выражения, отделяется четырьмя пробелами слева!

 

Программа запрашивает у пользователя два числа, затем сравнивает их и если числа равны, то есть логическое выражение A==B истинно, то выводится соответствующее сообщение.

https://sites.google.com/site/moiboarkin/_/rsrc/1545618098814/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545618173918/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if_res.png

Результат выполнения программы с использованием условного оператора if

2.     Конструкция if – else
Бывают случаи, когда необходимо предусмотреть альтернативный вариант выполнения программы. Т.е. при истинном условии нужно выполнить один набор инструкций, при ложном – другой. Для этого используется конструкция if – else.


3.     Синтаксис оператора if – else выглядит так:

if  логическое выражение:
    команда_1
    команда_2
    ...
    команда_n
else:
    команда_1    
    команда_2
    ...
    команда_n


Программа запрашивает у пользователя два числа, затем сравнивает их и если числа равны, то есть логическое выражение A==B истинно, то выводится соответствующее сообщение. В противном случае выводится сообщение, что числа не равны.

https://sites.google.com/site/moiboarkin/_/rsrc/1545618538122/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-else.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545618569544/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-else_res.png

Результат выполнения программы с использованием условного оператора if-else

 

3. Конструкция if – elif – else
    Для реализации выбора из нескольких альтернатив можно использовать конструкцию if – elif – else.
Синтаксис оператора if – elif – else выглядит так:

if  логическое выражение_1:
    команда_1

    команда_2

    ...

    команда_n
elif логическое выражение_2:
    команда_1

    команда_2

    ...

    команда_n
elif  логическое выражение_3:

    команда_1

    команда_2

    ...

    команда_n

else:
    команда_1

    команда_2

    ...

    команда_n

 

Программа запрашивает число у пользователя и сравнивает его с нулём a<0. Если оно меньше нуля, то выводится сообщение об этом. Если первое логическое выражение не истинно, то программа переходит ко второму - a==0. Если оно истинно, то программа выведет сообщение, что число равно нулю, в противном случае, если оба вышеуказанных логических выражения оказались ложными, то программа выведет сообщение, что введённое число больше нуля.

https://sites.google.com/site/moiboarkin/_/rsrc/1545619092595/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-elif-else.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1545619149100/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/if-elif-else_res.png

Результат выполнения программы с использованием условного оператора if-elif-else

 

 

 

Пример 

Вариант 0

Дано 3 числа. Найти минимальное среди них и вывести на экран.

Решение

Для простоты построим блок-схему задачи.

https://sites.google.com/site/moiboarkin/_/rsrc/1547165402799/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/block.png?height=344&width=400

Командами

a=input('')
b=input('')
c=input('')

введём три числа, присвоив значения переменным a, b, c.

Условной конструкцией if-else проверим на истинность логическое выражение a<b.

Если оно истинно, то переходим на проверку логического выражения a<c. Если оно истинно, то переменной "y" присвоим значение переменной "а", т.е. "а" будет минимальным, а иначе "y" присвоится значение переменной "с".

Если в начале логическое выражение a<b оказалось ложным, то переходим на проверку другого логического выражения b<c.

Если оно истинно, то "у" присвоится значение переменной "b", иначе "c".

Командой print() выводим минимальное значение.



https://sites.google.com/site/moiboarkin/_/rsrc/1547163816165/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/ex_ifelse_prog_var0.png

Пример программы

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547163828535/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-4/ex_ifelse_prog_var0_res.png

Результат выполнения программы

 

 Задания для самостоятельной работы (по вариантам)

 

Вариант 1

Даны три целых числа. Выбрать из них те, которые принадлежат интервалу [1,3].

 

Вариант 2

Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).

 

Вариант 3

Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется в том случае, если сумма покупки больше 500 руб., в 5% - если сумма больше 1000 руб.

 

Вариант 4

Написать программу, которая бы по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и массе М выдавала соответствующее значение массы в килограммах.

 

Вариант 5

Найти косинус минимального из 4 заданных чисел.

 

Вариант 6

Вывести на экран синус максимального из 3 заданных чисел.

 

Вариант 7

Даны три стороны одного треугольника и три стороны другого треугольника. Определить, будут ли эти треугольники равновеликими, т. е. имеют ли они равные площади. Если это не так, то вывести «Foul!!!»

 

Вариант 8

Составьте программу подсчёта площади равнобедренного треугольника. Если площадь треугольника чётная, разделить её на 2, в противном случае вывести сообщение «Не могу делить на 2!»

 

Вариант 9

Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца на английском языке.

 

Вариант 10

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

Вариант 11

Дано три числа. Найти количество положительных чисел среди них;

 

Вариант 12

Если действительные числа x и y – одного знака, найти их среднее геометрическое, в противном случае найти их среднее арифметическое.

 

Вариант 13

Определить, существует ли прямоугольный треугольник со сторонами x,y,z. Если – да, вычислить его площадь.

 

Вариант 14

Определить, существует ли треугольник с длинами сторон a, b, c.  Если – да, вычислить его площадь по формуле Герона.

Формула Герона имеет вид:

S=p(p-a)(p-b)(p-c),  где p=(a+b+c)/2

 

Вариант 15

Вычислить значение функции f(x), если

https://lh4.googleusercontent.com/J9zOFCB7snth0xQIgd2WedxXZ5jczkEtDr5DYyO1m6vZ288yLH09uwGLQKYoQZ-9nsZQKqbXwXdbvHSbVc6Z0aV4Hrij-shkyuuAhRXtO_TJpEM_brcjk6orjck0c45r6pxYAA0CwiaIhZ55ug



Список литературы



1. http://skobki.com/python-struktury-vetvleniya-operatory-if-else-if-ifelif/

2. https://pythonworld.ru/osnovy/instrukciya-if-elif-else-proverka-istinnosti-trexmestnoe-vyrazhenie-ifelse.html

3. https://younglinux.info/python/elif.php

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа 4 Работа с циклами в Python

Цель работы: познакомиться с циклическими конструкциями

В Python существуют два типа цикличных выражений:

  • Цикл while
  • Цикл for

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

while логическое выражение:

команда 1
команда 2
...
команда n

    После ключевого слова while указывается условное выражение, и пока это выражение возвращает значение True, будет выполняться блок инструкций, который идет далее.
    Все инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала строки (4 пробела).

https://sites.google.com/site/moiboarkin/_/rsrc/1545625222444/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/while.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1545625244424/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/while_res.png

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

2.Цикл for в Python:
    Цикл for в Python обладает способностью перебирать элементы любого комплексного типа данных (например, строки или списка). 
    Синтаксис цикла for:
for int in range():
    команда 1

    команда 2

    ...

   команда n

Переменной int присваивается значение первого элемента функции range(), после чего выполняются команды. Затем переменной int присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы функции range().

 

Функция range() является универсальной функцией Python для создания списков (list) содержащих арифметическую прогрессию. Чаще всего она используется в циклах for.

range(старт, стоп, шаг) - так выглядит стандартный вызов функции range() в Python. По умолчанию старт равняется нулю, шаг единице.

 

Вариант 0

1. Найти сумму n элементов следующего ряда чисел: 1 -0.5 0.25 -0.125 ... n. Количество элементов (n) вводится с клавиатуры. Вывести на экран каждый член ряда и его сумму. Решить задачу используя циклическую конструкцию for.

Решение:

В данном случае ряд чисел состоит из элементов, где каждый следующий меньше предыдущего в два раза по модулю и имеет обратный знак. Значит, чтобы получить следующий элемент, надо предыдущий разделить на -2.

Какой-либо переменной надо присвоить значение первого элемента ряда (в данном случае это 1). Далее в цикле добавлять ее значение к переменной, в которой накапливается сумма, после чего присваивать ей значение следующего элемента ряда, разделив текущее значение на -2. Цикл должен выполняться n раз.

https://sites.google.com/site/moiboarkin/_/rsrc/1547274154746/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_for_var0_prog.png

Пример программы с циклом for

https://sites.google.com/site/moiboarkin/_/rsrc/1547274168171/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_for_var0_res.png

Результат выполнения программы

2. Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Решение:

Для начала введём целое число командой int(input(текст сообщения)).

Затем зададим переменной i значение 2. Переменная i выполняет роль счётчика. Если задать ей значение 1, то условие задачи не будет выполнено, а результатом всегда будет 1.

В цикле while в качестве логического выражения используется команда n%i сравниваемая с нулём. Таким образом, если остаток от деления введённого числа на текущее значение i не равно нулю, то счётчик увеличивается на 1, а если равно нулю цикл заканчивается и командой print() выводится сообщение и значение i.

https://sites.google.com/site/moiboarkin/_/rsrc/1547275785094/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_while_var0_prog.png

Пример программы с циклом while

https://sites.google.com/site/moiboarkin/_/rsrc/1547276081707/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-5/ex_while_var0_res.png

Результат выполнения программы

 

Вариант 1

1. Дано вещественное число – цена 1 кг конфет. Вывести стоимость 1, 2, … 10 кг конфет. Решить задачу используя циклическую конструкцию for.

2. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти: а) сумму всех чисел последовательности; б) количество всех чисел последовательности

Решить задачу используя циклическую конструкцию while.

Вариант 2

1. Даны два числа A и B (A<B). Найти сумму всех целых чисел от А до  В включительно. Решить задачу используя циклическую конструкцию for.

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

Решить задачу используя циклическую конструкцию while.

Вариант 3

1. Даны два числа A и B (A<B). Найти сумму квадратов всех целых чисел от А до В включительно. Решить задачу используя циклическую конструкцию for.

2. Дана последовательность из n целых чисел. Первое число в последовательности чётное. Найти сумму всех идущих подряд в начале последовательности чётных чисел. Условный оператор не использовать

Решить задачу используя циклическую конструкцию while.

Вариант 4

1. Найти среднее арифметическое всех целых чисел от a до 200 (значения a и b вводятся с клавиатуры; a≤ 200). Решить задачу используя циклическую конструкцию for.

2. Дана последовательность из n вещественных чисел, начинающаяся с положительного числа. Определить, какое количество положительных чисел записано в начале последовательности. Условный оператор не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 5

1. Найти сумму всех целых чисел от a до b (значения a и b вводятся с клавиатуры; b ≥a). Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2^K. Найти целое число K — показатель этой степени.

Решить задачу используя циклическую конструкцию while.

Вариант 6

1. Найти сумму квадратов всех целых чисел от a до 50 (значение a вводится с клавиатуры; 0 ≤a≤50). Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 1). Найти наименьшее целое число K, при котором выполняется неравенство 5^K > N.

Решить задачу используя циклическую конструкцию while.

Вариант 7

1. Дана непустая последовательность целых чисел, оканчивающаяся нулем.

Найти:

а) сумму всех чисел последовательности;

б) количество всех чисел последовательности.

Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 2^K > N.

Решить задачу используя циклическую конструкцию while.

Вариант 8

1. Дана последовательность из n вещественных чисел. Первое число в последовательности нечетное. Найти сумму всех идущих подряд в начале последовательности нечетных чисел. Условный оператор не использовать. Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.

Решить задачу используя циклическую конструкцию while.

Вариант 9

1. Среди чисел 1, 4, 9, 16, 25, ... найти первое число, большее n. Решить задачу используя циклическую конструкцию for.

2.Среди чисел 1, 5 10, 16, 23, ... найти первое число, большее n. Условный оператор не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 10

1. Известны оценки по физике каждого из 20 учеников класса. Определить среднюю оценку. Решить задачу используя циклическую конструкцию for.

2.Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму.

Решить задачу используя циклическую конструкцию while.

Вариант 11

1. Известно сопротивление каждого из элементов электрической цепи. Все элементы соединены последовательно. Определить общее сопротивление цепи. Решить задачу используя циклическую конструкцию for.

2.Дано целое число N (> 0). Найти наибольшее целое число K, квадрат которого не превосходит N: K^2 ≤ N. Функцию извлечения квадратного корня не использовать.

Решить задачу используя циклическую конструкцию while.

Вариант 12

1. Известны оценки по физике каждого ученика двух классов. Определить среднюю оценку в каждом классе. Количество учащихся в каждом классе одинаковое. Решить задачу используя циклическую конструкцию for.

2. Выведите на экран для числа 2 его степени от 0 до 20

Решить задачу используя циклическую конструкцию while.

Вариант 13

1. В области 12 районов. Известны количество жителей (в тысячах человек) и площадь (в км2) каждого района. Определить среднюю плотность населения по области в целом. Решить задачу используя циклическую конструкцию for.

2.Мой богатый дядюшка подарил мне один доллар в мой первый день рождения. В каждый день рождения он удваивал свой подарок и прибавлял к нему столько долларов, сколько лет мне исполнилось. Написать программу, указывающую, к какому дню рождения подарок превысит 100$.

Решить задачу используя циклическую конструкцию while.

Вариант 14

1. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько клеток будет через 3, 6, 9, ..., 24 часа, если первоначально была одна амеба. Решить задачу используя циклическую конструкцию for.

2. Вывести таблицу значений функции y = -0.5x + x. Значения аргумента (x) задаются минимумом, максимумом и шагом. Например, если минимум задан как 1, максимум равен 3, а шаг 0.5. То надо вывести на экран изменение x от 1 до 3 с шагом 0.5 (1, 1.5, 2, 2.5, 3) и значения функции (y) при каждом значении x.

Решить задачу используя циклическую конструкцию while.

Вариант 15

1. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего дня. Определить:

а) пробег лыжника за второй, третий, ..., десятый день тренировок;

б) какой суммарный путь он пробежал за первые 7 дней тренировок.

Решить задачу используя циклическую конструкцию for.

2. Найти сумму и произведение цифр, введенного целого числа. Например, если введено число 325, то сумма его цифр равна 10 (3+2+5), а произведение 30 (3*2*5).

Решить задачу используя циклическую конструкцию while.

 

Список литературы

1.     https://pythonworld.ru/osnovy/cikly-for-i-while-operatory-break-i-continue-volshebnoe-slovo-else.html

2.     https://python-scripts.com/loops-for-while

3.     https://metanit.com/python/tutorial/2.7.php

4.     https://younglinux.info/python/for.php

5.     http://labs.org.ru/python-2/

 

Лабораторная работа 5 Работа со строками в Python

 

Цель работы: познакомится с методами работы со строками.
Учащийся должен:
Владеть:
    Навыками составления линейных алгоритмов на языке программирования Python с использованием строковых данных;
Уметь:
    Применять функции и методы строк при обработке строковых данных;
Знать:
    Операции и методы обработки строк.

Строка — базовый тип представляющий из себя неизменяемую последовательность символов; str от «string» — «строка».

Функции и методы работы со строками

Функция или метод

Назначение

S1 + S2

Конкатенация (сложение строк)

S1 * 3

Повторение строки

S[i]

Обращение по индексу

S[i:j:step]

Извлечение среза

len(S)

Длина строки

S.join(список)

Соединение строк из последовательности str через разделитель, заданный строкой

S1.count(S[, i, j]) 

количество вхождений подстроки s в строку s1. Результатом является число. Можно указать позицию начала поиска i и окончания поиска j

S.find(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или -1

S.index(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError

S.rindex(str, [start],[end])

Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError

S.replace(шаблон, замена)

Замена шаблона

S.split(символ)

Разбиение строки по разделителю

S.upper()

Преобразование строки к верхнему регистру

S.lower()

Преобразование строки к нижнему регистру

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

https://sites.google.com/site/moiboarkin/_/rsrc/1547081137555/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547081157833/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_res.png

Результат выполнения программы с использованием функций и методов работы со строками

 

Пример

Вариант 0

Проверить, будет ли строка читаться одинаково справа налево и слева направо (т. е. является ли она палиндромом).

Решение

Сначала введём строку командой: s=input('Введите строку ').

Затем определим логическую переменную  flag и присвоим ей значение 1: flag=1.

Для начала в введённой строке нужно удалить пробелы. Для этого воспользуемся циклической конструкцией for, которая выполнится столько раз, какую имеет длину строка. Длину строки определим функцией len(s).

В теле цикла будем проверять следующее условие: s[i]!=' '. Данное логическое выражение будет истинно в том случае, если i-ый элемент строки не будет равен пробелу, тогда выполнится команда следующая после двоеточия: string+=s[i].

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

Для проверки строки на "палиндром" воспользуемся циклической конструкцией for.

Длина половины строки находится делением нацело на 2.  Если количество символов нечетно,  то стоящий в середине не учитывается, т.к. его сравниваемая пара - он сам.

Количество повторов цикла равно длине половины строки. Длину строки определим функцией len(s), где аргумент введённая нами строка s. Зная длину строки, можно вычислить количество повторов цикла. Для этого целочисленно разделим длину строки на 2: len(s)//2.

Для задания диапазона для цикла используем функцию range(), в которой аргументом будет являться половина длины строки: range(len(s//2 )).

for i in range(len(s//2 )).

Если символ с индексом i не равен "симметричному" символу с конца строки (который находится путем индексации с конца)

if s[i] != s[-1-i],

то переменной flag присваивается значение 0 и происходит выход из цикла командой break. 

Далее, при помощи условной конструкции if-else в зависимости от значения flag либо - 0, либо -1 выводится сообщение, что строка палиндром, либо нет.

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547426930984/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_var0_prog.png

Пример программы на Python

https://sites.google.com/site/moiboarkin/_/rsrc/1547427035828/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-3/ex_string_var0_res.png

Результат выполнения программы

 

Задания для самостоятельной работы (по вариантам)

 

Вариант 1

Дана строка, содержащая русскоязычный текст. Найти количество слов, начинающихся с буквы "е".

 

Вариант 2

В строке заменить все двоеточия (:) знаком процента (%). Подсчитать количество замен.

 

Вариант 3

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

Вариант 4

В строке заменить букву(а) буквой (о). Подсчитать количество замен. Подсчитать, сколько символов в строке.

 

Вариант 5

В строке заменить все заглавные буквы строчными.

 

Вариант 6

В строке удалить все буквы "а"  и подсчитать количество удаленных символов.

 

Вариант 7

Дана строка. Преобразовать ее, заменив звездочками все буквы "п", встречающиеся среди первых n/2 символов. Здесь n - длина строки.

Вариант 8

Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.

 

Вариант 9

Определить, сколько раз в тексте встречается заданное слово.

 

Вариант 10

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

Вариант 11

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

Вариант 12

Дана строка. Вывести все слова, оканчивающиеся на букву "я".

 

Вариант 13

Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобки. Вывести на экран все символы, расположенные внутри этих скобок.

Вариант 14

Дана строка. Вывести все слова, начинающиеся на букву "а" и слова, оканчивающиеся на букву "я".

 

Вариант 15

 Дана строка текста. Подсчитать количество букв «т» в строке.

 

 

 

Список литературы

 

 

1.     https://ps.readthedocs.io/ru/latest/strings.html

2.     https://pythonworld.ru/tipy-dannyx-v-python/stroki-literaly-strok.html

3.     https://pythonworld.ru/tipy-dannyx-v-python/stroki-funkcii-i-metody-strok.html

 

 

 

 

 

 

 

 

Лабораторная работа 6 Работа со списками. Операции над списками в Python

 

Цель работы: Изучение списков в Python.

 

Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).

Список (list) – это структура данных для хранения объектов различных типов. 

 

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

 

Создание списков на Python.

Создать список можно несколькими способами

 

1. Получение списка через присваивание конкретных значений.

Так выглядит в коде Python пустой список:

s = []  # Пустой список

 

Примеры создания списков со значениями:

https://sites.google.com/site/moiboarkin/_/rsrc/1547171900178/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog.png

 

Списки можно складывать (конкатенировать) с помощью знака «+»:

https://sites.google.com/site/moiboarkin/_/rsrc/1547172263718/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog1_res.png

Результат:

https://sites.google.com/site/moiboarkin/_/rsrc/1547172301822/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog1.png

 

2. Создание списка при помощи функции Split().

Используя функцию split в Python можно получить из строки список.

stroka ="Привет, страна"

lst=stroka.split(",")  

https://sites.google.com/site/moiboarkin/_/rsrc/1547547457539/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_split_prog.png

Результат:

https://sites.google.com/site/moiboarkin/_/rsrc/1547547471226/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_split_res.png

 

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

В Python создать список можно также при помощи генераторов.

Первый способ.

Сложение одинаковых списков заменяется умножением:

Список из 10 элементов, заполненный единицами

l = [1]*10

 

Второй способ.

Пример 1.

l = [i for i in range(10)]

 

Пример 2.

c = [c * 3 for c in 'list']

print (c) # ['lll', 'iii', 'sss', 'ttt']

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547299742772/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list.png

 

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

Пример 1.

Заполнить список квадратами чисел от 0 до 9, используя генератор списка.

Решение:

l = [i*i for i in range(10)]

Пример 2.

Заполнить список числами, где каждое последующее число больше на 2.

l = [(i+1)+i for i in range(10)]

print(l)

https://sites.google.com/site/moiboarkin/_/rsrc/1547519534818/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list4.png


Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.randint(A, B) - случайное целое число N, A ≤ N ≤ B.
random.random() - случайное число от 0 до 1.

Случайные числа в списке:

10 чисел, сгенерированных случайным образом в диапазоне (10,80)
from random import randint

l = [randint(10,80) for x in range(10)]


10 чисел, сгенерированных случайным образом в диапазоне (0,1)
l
= [random() for i in range(10)]

https://sites.google.com/site/moiboarkin/_/rsrc/1547520842756/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list5_res.png


https://sites.google.com/site/moiboarkin/_/rsrc/1547520783992/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list5.png

 

4. Ввод списка (массива) в языке Python.

Для ввода элементов списка используется цикл for и команда range ():

for i in range(N):

   x[i] = int( input() )

Более простой вариант ввода списка:

x = [ int(input()) for i in range(N) ]

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547692616791/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547692645732/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_res.png

 

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


5.Вывод списка в языке Python.

Вывод целого списка:

print (L)

Поэлементный вывод списка:

for i in range(N):

  print ( L[i], end = " " )

https://sites.google.com/site/moiboarkin/_/rsrc/1547518016396/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog2_res.png

 

 

2. Методы списков.

Метод

Что делает

list.append(x)

Добавляет элемент в конец списка

list.extend(L)

Расширяет список list, добавляя в конец все элементы списка L

list.insert(i, x)

Вставляет перед i-ым элементом значение x

list.remove(x)

Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует

list.pop([i])

Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент

list.index(x, [start [, end]])

Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)

list.count(x)

Возвращает количество элементов со значением x

list.reverse()

Разворачивает список

list.copy()

Поверхностная копия списка

list.clear()

Очищает список

 

Ниже приведена программа, демонстрирующая методы работы списков.

https://sites.google.com/site/moiboarkin/_/rsrc/1547518558801/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list_prog2.png

Пример программы на Python

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547518644911/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_list2.png

Результат выполнения программы

 

 

 

Вариант 0

1. Из  массива X  длиной n, среди элементов которого  есть положительные, отрицательные и равные нулю, сформировать новый массив Y, взяв в него только те элементы из X,  которые больше по модулю заданного числа M. Вывести на  экран число M, данный и полученные массивы.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547424991714/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog_var0.png

https://sites.google.com/site/moiboarkin/_/rsrc/1547425095351/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_prog_var0_res.png

2. В массиве целых чисел все отрицательные элементы заменить на положительные. Вывести исходный массив и полученный.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547605451968/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_var0_2_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547605554165/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-6/ex_array_var0_2_res.png

 

Вариант 1

1. Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти максимальный элемент. Вывести массив на экран в обратном порядке.

2. В массиве действительных чисел все нулевые элементы заменить на среднее арифметическое всех элементов массива.

Вариант 2

1. Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти минимальный элемент. Вывести индекс минимального элемента на экран.

2. Дан массив целых чисел. Переписать все положительные элементы во второй массив, а остальные - в третий.

 

Вариант 3

1. В одномерном числовом массиве D длиной n вычислить сумму элементов с нечетными индексами. Вывести на экран массив D, полученную сумму.
2. Дан одномерный массив из 8 элементов. Заменить все элементы массива меньшие 15 их удвоенными значениями. Вывести на экран монитора преобразованный массив.

Вариант 4

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

Вариант 5

1. Дан одномерный массив из 10 целых чисел. Вывести пары отрицательных чисел, стоящих рядом.
2. Дан целочисленный массив размера 10. Создать новый массив, удалив все одинаковые элементы, оставив их 1 раз.

Вариант 6

1. Дан одномерный массив из 10 целых чисел. Найти максимальный элемент и сравнить с ним остальные элементы. Вывести количество меньших максимального и больших максимального элемента.
2. Одномерный массив из 10-и целых чисел заполнить с клавиатуры, определить сумму тех чисел, которые >5.

Вариант 7

1. Дан массив целых чисел. Найти сумму элементов с четными номерами и произведение элементов с нечетными номерами. Вывести сумму и произведение.
2. Переставить в одномерном массиве минимальный элемент и максимальный.

Вариант 8

1. Найдите сумму и произведение элементов списка. Результаты вывести на экран.
2. В массиве действительных чисел все нулевые элементы заменить на среднее арифметическое всех элементов массива.

Вариант 9

1. Дан одномерный массив, состоящий из N вещественных элементов. Ввести массив с клавиатуры. Найти и вывести минимальный по модулю элемент. Вывести массив на экран в обратном порядке.
2. Даны массивы A и B одинакового размера 10. Вывести исходные массивы. Поменять местами их содержимое и вывести в начале элементы преобразованного массива A, а затем — элементы преобразованного массива B.

Вариант 10

1. Определите, есть ли в списке повторяющиеся элементы, если да, то вывести на экран это значение, иначе сообщение об их отсутствии.
2. Дан одномерный массив из 15 элементов. Элементам массива меньше 10 присвоить нулевые значения, а элементам больше 20 присвоить 1. Вывести на экран монитора первоначальный и преобразованный массивы в строчку.

 

Вариант 11

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

Вариант 12

1. Найти наименьший нечетный элемент списка и вывести его на экран.
2. Даны массивы A и B одинакового размера 10. Поменять местами их содержимое и вывести вначале элементы преобразованного массива A, а затем — элементы преобразованного массива B.

Вариант 13

1. Дан одномерный массив целых чисел. Проверить, есть ли в нем одинаковые элементы. Вывести эти элементы и их индексы.
2. Дан одномерный массив из 8 элементов. Заменить все элементы массива меньшие 15 их удвоенными значениями. Вывести на экран монитора преобразованный массив.

Вариант 14

1. Найти максимальный элемент численного массива и поменять его местами с минимальным.

2. Программа заполняет одномерный массив из 10 целых чисел числами, считанными с клавиатуры. Определить среднее арифметическое всех чисел массива. Заменить элементы массива большие среднего арифметического на 1.

Вариант 15

1. Определите, есть ли в списке повторяющиеся элементы, если да, то вывести на экран эти значения.
2. Дан одномерный массив целого типа. Получить другой массив, состоящий только из нечетных чисел исходного массива или сообщить, что таких чисел нет. Полученный массив вывести в порядке убывания элементов.

 

Список литературы

1.     https://pythonworld.ru/tipy-dannyx-v-python/spiski-list-funkcii-i-metody-spiskov.html

2.     https://www.ibm.com/developerworks/ru/library/l-python_part_3/index.html

3.     https://devpractice.ru/python-lesson-7-work-with-list/

4.     http://labs.org.ru/python-6/

 

Лабораторная работа 7 Функции в Python

Цель работы: изучение функций в Python.

 

знать синтаксис функций, процедура с параметром, локальные и глобальные переменные;

уметь применять синтаксис функций при составлении программы;

владеть основными навыками работы с функциями.

 

Подпрограмма - это именованный фрагмент программы, к которому можно обратиться из другого места программы

 

Рассмотрим синтаксис функции:

def имя функции (Список параметров):

  Система команд


Для определения функции используется ключевое слово def, затем указывается имя функции и в скобках её формальные параметры, если они присутствуют. После ставится двоеточие и со следующей строки с отступом в 4 пробела указываются команды.

функция — вспомогательный алгоритм, выполняющий некоторые действия.

функция должна быть определена к моменту её вызова. Определение функции начинается со служебного слова def.
Вызов функции осуществляется по ее имени, за которым следуют круглые скобки, например, Err().
В одной программе может быть сколько угодно много вызовов одной и той же функции.
Использование функции сокращает код и повышает удобочитаемость.


функция с параметрами.
Как используются в Python параметры функции, рассмотрим на примере.

Пример.

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

def printChar(s):
    print (s)
sim = input('введите символ')
printChar(sim) # первый вызов, вывод введенного символа
printChar('*') # второй вызов, вывод *

https://sites.google.com/site/moiboarkin/_/rsrc/1547772941044/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure1_prog.png

https://sites.google.com/site/moiboarkin/_/rsrc/1547772879421/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure1_res.png


Глобальная переменная — если ей присвоено значение в основной программе (вне процедуры).

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

Параметры функции — локальные переменные.

2. Примеры использования локальных и глобальных переменных.

Пример 1.

x = 3 # глобальная переменная

def pr(): # функция без параметров

  print (x) # вывод значения глобальной переменной

pr()

https://sites.google.com/site/moiboarkin/_/rsrc/1547773049024/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure2.png

 

 

Пример 2.

x = 3  # глобальная переменная

def pr(a): # функция с параметром

  print (a) # 4

pr(x) # передача параметра глобальной переменной (3)

https://sites.google.com/site/moiboarkin/_/rsrc/1547773556274/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure3.png

 

Существует возможность изменить значение глобальной переменной (не создавая локальную). В процедуре с помощью слова global:

x = 3 # глобальная переменная
def pr(): # функция без параметров
    global x
    x = pow(x,10)
    print (x) # вывод измененного значения глобальной переменной 
pr()

 

 

Функция - подпрограмма, к которому можно обратиться из другого места программы.

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

 

Рассмотрим синтаксис функции:
def имя функции(Список параметров): 
    Система команд
    return выражение


Часть функций языка Python являются встроенными функциями, которые обеспечены синтаксисом самого языка. Например, int, input, randint.
Рассмотрим пример создания пользовательских функций.

Пример 1.
Вычислить сумму цифр числа.
def sumD(n): # определение функции с параметром
    sumD = 0
    while n!= 0:
        sumD += n % 10
        n = n // 10
    return sumD # возврат значения функции
# основная программа
print (sumD(int(input())) # вызов функции с параметром

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547779360944/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function1.png

 

 

Вариант 0.

1. Определить, являются ли три треугольника равновеликими. Длины сторон вводить с клавиатуры. Для подсчёта площади треугольника использовать формулу Герона. Вычисление площади оформить в виде функции с тремя параметрами.

Формула Герона:

https://sites.google.com/site/moiboarkin/_/rsrc/1547742863615/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/geron.gif?height=147&width=320

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547743024592/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function_var1_prog.png

 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547743043928/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_function_var1_res.png

 

2. Ввести одномерный массив A длиной m. Поменять в нём местами первый и последний элементы. Длину массива и его элементы ввести с клавиатуры. В программе описать процедуру для замены элементов массива. Вывести исходные и полученные массивы.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547743751416/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure_var1_prog.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547743822288/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-7/ex_procedure_var1_res.png

 

 

 

Вариант 1.

1. Составить программу для вычисления площади разных геометрических фигур.

2. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение.

Вариант 2.

1. Вычислить площадь правильного шестиугольника со стороной, а, используя подпрограмму вычисления площади треугольника.

2.  Пользователь вводит две стороны трех прямоугольников. Вывести их площади. 

 

Вариант 3.

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

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

 

Вариант 4.

1. Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить программу деления дроби на дробь. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

2. Задана окружность (x-a)2 + (y-b)2 = R2 и точки Р(р1, р2), F(f1, f1), L(l1,l2). Выяснить и вывести на экран, сколько точек лежит внутри окружности. Проверку, лежит ли точка внутри окружности, оформить в виде процедуры.

 

Вариант 5.

1. Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить программу вычитания из первой дроби второй. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

2. Напишите программу, которая выводит в одну строчку все делители переданного ей числа, разделяя их пробелами.

 

Вариант 6.

1. Составить программу нахождения наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК) двух натуральных чисел НОК(А, В) = (A*B)/НОД(A,B). Использовать подпрограмму алгоритма Евклида для определения НОД.

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

 

Вариант 7.

1. Даны числа X, Y, Z, Т — длины сторон четырехугольника. Вычислить его площадь, если угол между сторонами длиной X и У — прямой. Использовать две подпрограммы для вычисления площадей: прямоугольного треугольника и прямоугольника.

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

Вариант 8.

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

2. Ввести одномерный массив A длиной m. Поменять в нём местами первый и последний элементы. Длину массива и его элементы ввести с клавиатуры. В программе описать процедуру для замены элементов массива. Вывести исходные и полученные массивы.

Вариант 9.

1. Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т. д. Через сколько таких действий получится нуль?

2. Даны 3 различных массива целых чисел. В каждом массиве найти произведение элементов и среднеарифметическое значение.

Вариант 10.

1. На отрезке [100, N] (210 < N < 231) найти количество чисел, составленных из цифр а, b, с.

2. Составить программу, которая изменяет последовательность слов в строке на обратную.

 

Вариант 11.

1. Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, 41 и 43). Напечатать все пары «близнецов» из отрезка [n, 2n], где n — заданное натуральное число, большее 2.

2. Даны две матрицы А и В. Написать программу, меняющую местами максимальные элементы этих матриц. Нахождение максимального элемента матрицы оформить в виде процедуры.

 

Вариант 12.

1. Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары «дружественных» чисел, которые не больше данного числа N.

2. Даны длины сторон треугольника a, b, c. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. Для вычисления медианы проведенной к стороне а, использовать формулу Вычисление медианы оформить в виде процедуры.

Вариант 13.

1. Натуральное число, в записи которого n цифр, называется числом Армстронга, если сумма его цифр, возведенная в степень n, равна самому числу. Найти все числа Армстронга от 1 до к.

2. Три точки заданы своими координатами X(x1, x2), Y(y1, y2) и Z(z1, z2). Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисления оформить в виде процедуры.

Вариант 14.

1. Составить программу для нахождения чисел из интервала [М, N], имеющих наибольшее количество делителей.

2.Четыре точки заданы своими координатами X(x1, x2), Y(y1, y2), Z(z1, z2), P(p1, p2). Выяснить, какие из них находятся на максимальном расстоянии друг от друга и вывести на экран значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде процедуры.

Вариант 15.

1. Найти все простые натуральные числа, не превосходящие n, двоичная запись которых представляет собой палиндром, т. е. читается одинаково слева направо и справа налево.

2. Четыре точки заданы своими координатами X(x1, x2, x3), Y(y1, y2, y3), Z(z1, z2, z3), T(t1,t2, t3). Выяснить, какие из них находятся на минимальном расстоянии друг от друга и вывести на экран значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде процедуры.

 

 

 

Список литературы

1.     https://pythonworld.ru/tipy-dannyx-v-python/vse-o-funkciyax-i-ix-argumentax.html

2.     http://labs.org.ru/python-3/

3.     http://www.4stud.info/add-ons/define-a-function-in-python.html

4.     https://python-scripts.com/functions-python

 

 

 

 

 

 

 

Лабораторная работа 8. Работа с двумерными массивами (вложенные списки).

5.     Цель работы: изучение вложенных списков в Python.

 

знать - способ описания двумерного массива, способы ввода элементов двумерного массива;

уметь - вводить массивы, получать списки через присваивание конкретных значений, применять функции;

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

 

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


Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.

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

 

1. Создание списка

Пусть даны два числа: количество строк n и количество столбцов m. Необходимо создать список размером n×m, заполненный нулями.
Очевидное решение оказывается неверным:
A = [ [0] *m ]*n

В этом легко убедиться, если присвоить элементу A[0][0] значение 1, а потом вывести значение другого элемента A[1][0] — оно тоже будет равно 1! Дело в том, что [0] * m возвращает ccылку на список из m нулей. Но последующее повторение этого элемента создает список из n элементов, которые являются ссылкой на один и тот же список (точно так же, как выполнение операции B = A для списков не создает новый список), поэтому все строки результирующего списка на самом деле являются одной и той же строкой.

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

Первый способ.

Сначала создадим список из n элементов (для начала просто из n нулей). Затем сделаем каждый элемент списка ссылкой на другой одномерный список из m элементов:

A = [0] * n
for i in range(n):
    A[i] = [0] * m

https://sites.google.com/site/moiboarkin/_/rsrc/1547730065250/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod1.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547730085561/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod1_res.png


Второй способ.

Создать пустой список, потом n раз добавить в него новый элемент, являющийся списком-строкой:

A = []
for i in range(n):
    A.append([0] * m)

https://sites.google.com/site/moiboarkin/_/rsrc/1547730906914/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547730927754/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod2_res.png

2. Ввод вложенного списка (двумерного массива)

Пример:

n=5
A = []
for i in range(n):
    b = input()
        for i in range(len(row)):
            row[i] = int(row[i])

A.append(row)

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693456297/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex1_array.png

 

3. Вывод вложенного списка (двумерного массива)

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

for i in range(n):
    for j in range(n]):
        print(A[i][j], end = ' ')
    print()

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693694345/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex2_array.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547693732703/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex2_array_res.png

 

То же самое, но циклы не по индексу, а по значениям списка:

for row in A:
    for elem in row:
        print(elem, end = ' ')
    print()

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547731217019/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_vvod3_res.png

 

Для вывода одной строки можно воспользоваться методом join. Использовав этот метод в цикле for можно

for row in A:

    print(' '.join(list(map(str, row))))

 

 

4. Обработка и вывод вложенных списков

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

A = [ [1, 2, 3], [4, 5, 6] ]

Здесь первая строка списка A[0] является списком из чисел [1, 2, 3]. 

То есть

A[0][0]= 1, 

A[0][1]= 2,

A[0][2]= 3,

A[1][0]=4,

A[1][1]=5,

A[1][2]=6.

Используем два вложенных цикла для подсчета суммы всех чисел в списке:

S = 0
for i in range(len(A)):
    for j in range(len(A[i])):
        S += A[i][j]

Или то же самое с циклом не по индексу, а по значениям строк:

S = 0
for row in A:
    for elem in row:
        S += elem

https://sites.google.com/site/moiboarkin/_/rsrc/1547696223216/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog_1.png


https://sites.google.com/site/moiboarkin/_/rsrc/1547696240490/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog_1_res.png


5. Пример сложной обработки массива


Пусть дана квадратная матрица из n строк и n столбцов. Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присвоить значение 0, элементам, находящимся выше главной диагонали – значение 1, элементам, находящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==3):

     0 1 1 
     2 0 1 
     2 2 0 

 


Рассмотрим несколько способов решения этой задачи. 

Первый способ.

Элементы, которые лежат выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагонали i>j. Таким образом, мы можем сравнивать значения i и j и по ним определять значение A[i][j]. Получаем следующий алгоритм:

for i in range(n):
    for j in range(n):
        if i < j:
            A[i][j] = 0
        elif i > j:
            A[i][j] = 2
        else:
            A[i][j] = 1

Ниже приведён пример программы, в котором квадратная матрица 3х3 заполняется элементами со значением 9, а затем элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присваивается значение 0, элементам, находящимся выше главной диагонали – значение 1, элементам, находящимся ниже главной диагонали – значение 2. 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735119767/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1.png

 

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

Второй способ.
Данный алгоритм плох, поскольку выполняет одну или две инструкции if для обработки каждого элемента. Если мы усложним алгоритм, то мы сможем обойтись вообще без условных инструкций.

Сначала заполним главную диагональ, для чего нам понадобится один цикл:

for i in range(n):
    A[i][i] = 1

Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам A[i][j] для j=i+1, ..., n-1. Здесь нам понадобятся вложенные циклы:

for i in range(n):
    for j in range(i + 1, n):
        A[i][j] = 0

Аналогично присваиваем значение 2 элементам A[i][j] для j=0, ..., i-1:

for i in range(n):
    for j in range(0, i):
        A[i][j] = 2

Можно также внешние циклы объединить в один и получить еще одно, более компактное решение:

for i in range(n):
    for j in range(0, i):
        A[i][j] = 2
    A[i][i] = 1
    for j in range(i + 1, n):
        A[i][j] = 0

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547736130947/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

Третий способ.
А вот такое решение использует операцию повторения списков для построения очередной строки списка. i-я строка списка состоит из i чисел 2, затем идет одно число 1, затем идет n-i-1 число 0:

for i in range(n):
    A[i] = [2] * i + [1] + [0] * (n - i - 1)

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547736294658/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog3.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547735139778/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_prog1_res.png

 

 

Вариант 0

1. Дан двумерный массив размером 3x3. Определить максимальное значение среди элементов третьего столбца массива; максимальное значение среди элементов второй строки массива. Вывести полученные значения.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547607087316/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_1.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547607113773/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_1_res.png

 

2. Дан двумерный массив размером mxn. Сформировать новый массив заменив положительные элементы единицами, а отрицательные нулями. Вывести оба массива.

Решение:

https://sites.google.com/site/moiboarkin/_/rsrc/1547781751903/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_2.png

 

https://sites.google.com/site/moiboarkin/_/rsrc/1547609171150/laboratornye-raboty/5-kurs/laboratornye-raboty-po-python/l-r-8/ex_double_array_var0_2_res.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант 1.

1. Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.

2. Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с первым и последним элементами строки соответственно.

Вариант 2.

1. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т. е. такой матрицей, в которой суммы элементов во всех строках и столбцах одинаковы.

2. Дана прямоугольная матрица A[N, N]. Переставить первый и последний столбцы местами и вывести на экран.

Вариант 3.

1. Определить, является ли заданная целая квадратная матрица n-го порядка симметричной (относительно главной диагонали).

2. Дана вещественная матрица размером n х m. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.

Вариант 4.

1. Дана прямоугольная матрица. Найти строку с наибольшей и строку с наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

2. Дана квадратная матрица A[N, N], Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде.

Вариант 5.

1. Упорядочить по возрастанию элементы каждой строки матрицы размером n х m.

2. Дана действительная матрица размером n х m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением. Если число четное, то заменяется нулем, нечетное - единицей. Вывести на экран новую матрицу.

Вариант 6.

1. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и в каждом столбце наименьший. Вывести на экран.

2. Дана действительная квадратная матрица порядка N (N — нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

Вариант 7.

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

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

Вариант 8.

1. Задана матрица порядка n и число к. Разделить элементы k-й строки на диагональный элемент, расположенный в этой строке.

2. Задана квадратная матрица. Получить транспонированную матрицу (перевернутую относительно главной диагонали) и вывести на экран.

Вариант 9.

1. Для целочисленной квадратной матрицы найти число элементов, кратных k, и наибольший из этих элементов.

2. В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n — 1 путем отбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен элемент с найденным значением.

Вариант 10.

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

2. Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-й строки (1 <= k <= М).

Вариант 11.

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

2. Среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10, найти столбец с минимальным произведением элементов и поменять местами с соседним.

Вариант 12.

1. Для заданной квадратной матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

2. Дана действительная матрица размером n х m. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.

Вариант 13.

1. Определить наименьший элемент каждой четной строки матрицы А[М, N].

2. Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.

Вариант 14.

1. Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

2. Составить программу, которая заполняет квадратную матрицу порядка п натуральными числами 1, 2, 3, ..., n2, записывая их в нее «по спирали». 

Например, для п = 5 получаем следующую матрицу: 

1 2 3 4 5 

16 17 18 19 6 

15 24 25 20 7 

14 23 22 21 8 

14 12 11 10 9

Вариант 15.

1. Определить номера строк матрицы R[M, N], хотя бы один элемент которых равен с, и элементы этих строк умножить на d.

2. Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.

 Список литературы

1. https://pythontutor.ru/lessons/2d_arrays/

2. http://labs.org.ru/python-8/

3. http://progras.ru/31-dvumernye-spiski-massivy-matricy-v-python/

 

 

Встроенные функции

abs()

dict()

help()

min()

setattr()

all()

dir()

hex()

next()

slice()

any()

divmod()

id()

object()

sorted()

ascii()

enumerate()

input()

oct()

staticmethod()

bin()

eval()

int()

open()

str()

bool()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

 

delattr()

hash()

memoryview()

set()

 

abs(x)

Возвращает абсолютное значение числа. Аргумент может быть целым или числом с плавающей точкой. Если аргумент является комплексном числом, возвращается его величина.

all(iterable)

Возвращает True, если все элементы iterable возвращают правду (или если итерируемый объект пуст). Эквивалентно к:

def all(iterable):

    for element in iterable:

        if not element:

            return False

    return True

any(iterable)

Возвращает True, если какой-нибудь элемент iterable возвращает истину. Если итерируемый объект пуст, возвращается False. Эквивалентно к:

def any(iterable):

    for element in iterable:

        if element:

            return True

    return False

ascii(object)

Как repr() возвращает строку, содержащую представление объекта для печати, но избегая не-ASCII символов в строке, возвращаемых repr(), используя \x\u или \U выходы. Это создает строку, подобную той, что возвращает repr() в Python 2.

bin(x)

Преобразует целое число в двоичную строку, имеющую префикс '0b'. Результатом является допустимое выражение Python. Если x не является Python-объектом int, он должен определить метод __index__() (docs.python.org/3/reference/datamodel.html#object.__index__), который возвращает целое. Несколько примеров:

>>> bin(3)

'0b11'

>>> bin(-10)

'-0b1010'

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