Хадиев Р.М., Гайнутдинова А.Ф., Хадиев К.Р.
Хадиев Р.М., Гайнутдинова А.Ф., Хадиев К.Р.
Язык программирования P Y T H O N |
Казань – 2016 г.
УДК 32.81, 372.800.2
ББК 73
Хадиев Р.М., Гайнутдинова А.Ф., Хадиев К.Р.. Язык программирования PYTHON. Учебное пособие. Казань: Изд-во КФУ, 2016.
Данная работа является учебно-методическим пособием для самостоятельной работы студентов по курсу «Основы информатики». Пособие позволяет на базе имеющихся знаний по программированию на языках Паскаль и С++ освоить язык PYTHON, используемый при создании программ на различных платформах.
В начале предлагается на базе знакомых программ, написанных на языках Паскаль и С++, по аналогии переписать их на язык PYTHON. Затем, используя, инструментальные и новые идеологические средства языка, улучшить его, создавая более наглядную и эффективную запись.
Учебно-методическая разработка предназначена для студентов направлений, связанных с информационными технологиями, и учителей информатики.
Рецензент: .
Одобрено научно-методическим советом Института вычислительной математики и информационных технологий Казанского федерального университета.
© Хадиев Р.М., Гайнутдинова А.Ф., Хадиев К.Р.. 2016
© Казанский федеральный университет
Оглавление
Предисловие. 5
1. Элементы математической логики. 6
2. Установка системы и среда программирования. 8
Среда разработки Pysharm.. 10
Среда разработки IDLE.. 17
3. Описание языка PYTHON.. 18
3.1. Запись логических выражений. 19
3.2. Ввод-вывод. 27
3.1. Строки. 28
3.2. Структуры данных. 29
3.3. Простые конструкции. 32
3.4. Потоковый ввод-вывод и работа с текстовыми файлами. 33
3.6. Операторы.. 36
3.7. Функции. 38
3.8. Глобальные переменные. 41
4. Подключение библиотек. 42
5. Работа с файловой системой. 44
6. Работа с файловой системой. 47
7. Стеки. 49
8. Множества. 52
9. Компьютерная графика. 55
10. Ошибки и исключения. 68
11. Классы.. 71
Литература. 74
Литература и электронные ресурсы.. 75
Приложения. 76
1. Задачи ЕГЭ.. 76
2. Функции PyCharm.. 83
Предисловие
Python – это язык программирования, поддерживающий объектно-ориентированное программирование (ООП) и кросс-платформенность. Разработку языка Python начал Гвидо Ван Россум (Guido Van Rossum) в середине 1990-х годов.
Язык программирования Python позволяет:
· Создавать программы с высокой скоростью выполнения;
· Писать модули для Python на C/C++;
· Использовать стандартные библиотеки Python для работы с электронной почтой, протоколами Интернета FTP и HTTP, базой данных и прочее;
· Использовать скрипты, написанные на Python на большинстве современных ОС;
· Создавать программы для любых областей программирования;
· Поддерживать современные технологии с помощью стандартных библиотек.
Среда разработки Pysharm
F1 – помощь.
F2/Shift+F2 – переход к следующей или предыдущей ошибке.
F4 – редактирование источника.
Alt+1 – переход на окно проектов
Alt+2 – переход на окно списка избранных программ
Alt+Shift+f – включение программы в список избранных программ.
Alt+4 – выход ипрограммы.
Ctrl+Shift+F4 – закрывает активное окно.
Ctrl+E –последний файл.
Ctrl+Shift+Backspace – переход к последнему месту редактирования.
Ctrl+Alt+Right(Left) – поворот экрана.
Alt+6 – открытые рабочего поля программы
Alt+7 – открытые рабочего поля структуры программы
Alt+F1 – открытые /закрытие окон Project, Structure, Changes и т.д.
Shift+Esc – скрывает активное окно.
Ctrl+Shift+a – определение имени действия или режима.
Ctrl+B – Переход к объявлению переменной, класса, метода
Alt+Shift+Down/Alt+Shift+Up – перемещение текущей строки вниз вверх.
Ctrl+h – иерархия наследования текущего класса и переход по ней.
Ctrl+tab – переход между вкладками и окнами инструментов.
Ctrl+s – сохранение программы
Ctrl+Alt+s – определяется поведение внешний вид среды
Ctrl+F12 – список методов с переходом к их объявлению.
Ctrl+Shift+F12 – переход на полно экранный режим работы с текстом программы.
Alt+F12 – переход на консольный режим
Сtrl+с/ Сtrl+ins – копирование
Сtrl+v/ Shift+ins – вставка
Ctrl+Alt+s – синхронизация
Alt+Shift+F10 – вызывает диалоговое окно для создания, редактирования или удаления конфигурации для запуска проекта. А также выбора настроек по умолчанию, которые будут применены к новым конфигурациям запуска проекта.
Alt+Shift+F10 – вызывает диалоговое окно для создания, редактирования или удаления конфигурации для отладки проекта. А также настроек по умолчанию, которые будут применены к новым конфигурациям отладки проекта.
Shift+F10 – запуск программы с текущей установленной конфигурацией.
Shift+F9 – запуск отладчика.
Ctrl+Shift+F10 – запуск программы с конфигурацией установленной по умолчанию.
CTRL + K – комментирование проекта в систему контроля версий. В случае отсутствия изменений выдается следующее окно.
CTRL + T – обновление проекта из системы контроля версий. После нажатия клавиши ОК при условии правильной привязки к репозиторию проект обновится.
Alt+Shift+C – отображение последних изменений файла в системе.
Alt+BackQuote(`) – панель операций системы управления версиями, позволяющий добавить в систему контроля версий, создать репозиторий для проекта, включить систему контроля версий, проверить с помощью контроля версий, показать историю.
Ctrl+Shift+J – объединяет строки
Ctrl+Enter – структурно разбивает строки
Shift+Enter – открытие новой строки с соответствующим позиционорированием
Ctrl+Shift+U – переход на выделенный фрагмент текста
Среда разработки IDLE
http://pythonworld.ru/osnovy/pervaya-programma-sreda-razrabotki-idle.html
http://www.ibm.com/developerworks/ru/library/l-python_part_1/index.html
http://window.edu.ru/resource/825/76825/files/python_structured_programming.pdf
Описание языка PYTHON
Исходный код Python состоит из логических строк, каждая из которых в свою очередь состоит из физических строк. Для обозначения комментариев используется символ #. Комментарии и пустые строки интерпретатор игнорирует.
В Python нет символа, отвечающего за отделение выражений друг от друга в исходном коде, как, например, точка с запятой (;) в C++ или Java. Символ «;» позволяет разделить несколько инструкций, находящихся на одной физической строке.
Физические строки выписываются построчно. Если выражение слишком длинное, то две физических строки можно объединить в одну логическую. Для этого в конце первой строки ввести символ обратного слеша (\), и тогда следующую строку интерпретатор будет трактовать как продолжение первой. При этом далее в строке за символом «\» ничего писать нельзя. Для выделения блоков кода используются отступы. Логические строки с одинаковым размером отступа формируют блок, и заканчивается блок при появлении логической строка с отступом меньшего размера. Поэтому первая строка в сценарии Python не должна иметь отступа.
Имеется стандартный набор операторов и ключевых слов. Используются стандартные правила задания идентификаторов переменных, методов и классов – имя должно начинаться с подчеркивания или латинского символа любого регистра и не может содержать символов @, $, %. Также не может использоваться в качестве идентификатора только один символ подчеркивания.
Имя переменной – последовательность латинских букв, знака “_” и цифр, начинающаяся с латинской буквы или знака “_”, не являющейся зарезервированныйм словом. Прописные и строчные латинские буквы различаются.
Зарезервированные слова
and | del | for | is | raise |
assert | elif | from | lambda | return |
break | else | global | not | try |
class | except | if | or | while |
continue | exec | import | pass | yield |
def | finally | in |
Типы данных, используемые в Python:
· Целые и вещественные типы данных;
· Комплексный тип данных с вещественной и мнимой частью (пример такого числа – 1.5J или 2j, где J представляет собой квадратный корень из -1);
· Строки, заключаемые в одинарные, двойные или тройные кавычки, не изменяющие свое значение после создания;
· Логический тип данных bool c двумя вариантами значения – True и False. В качестве значений логических переменных стоит использовать 1 (True) или 0 (False).
Запись логических выражений
Определение двух аргументных часто используемых логических операций – ике аргументлы еш кулланылган мантыйк гамәлләр.
А | B | A®B | A V B | A&B | AÅB | A≡B | A│B |
Логические операции языка ПАСКАЛЬ.
А | ┐А | & | V | Å | ┐ – not – не & – and – и V – or – или Å – xor | |||||||||
Одноаргументные выражения и их таблицы истинности
А | ┐┐A | AÅA | A→A | AÅ ┐A | A→┐A | A→1 | A→0 |
А | A&A | A&ùA | AVA | AVùA | A&0 | AV0 | A&1 | AV1 |
Отсюда следует, что
A=AVA=A&A=A&1=AV0=┐┐А=AÅ0
┐A= A→┐A= A→0= AÅ1
1=AV1=AVùA= A→1
0=A&ùA=A&0.
Двух аргументные выражения и их таблицы истинности
А | B | ùAVB =A®B | A&ùB | ùA&ùB=ù(AVB) | ùAVùB =ù(A&B) =A|B |
А | B | A&BVùA&ùB = A≡B | ùA&BVA&ùB = A≠B = AÅB |
А | B | A&BVùB | AVùB |
Трех аргументные выражения и их таблицы истинности
А | B | С | A&BVA&C = A&(BVC) | (AVB)&(AVC) = AVB&C | ||
ДНФ. Построение совершенной дизъюнктивно нормальной формы по таблице истинности (СДНФ).
А | B | С | F(A,B,C)= | A&B&C V A&B&C V A&B&C - СДНФ |
A&B&C V | ||||
A&B&C V | ||||
A&B&C |
Проведем преобразования СДНФ данной функции F(A,B,C).
A&B&C V A&B&C V A&B&C = A&B&C V A&B&C V A&B&C V A&B&C = (AVA)&B&C V A&B&(C V C) = 1&B&C V A&B&1 = B&C V A&B = B&(C V A)
F(A,B,C)= B&(C V A)
Примеры: запись логических выражений на языке ПАСКАЛЬ
А&В —® А and В
ù А V B —® not А or В
A Å B —® A xor B
1. Написать следующие выражения на языке ПАСКАЛЬ и построить их таблицы истинности:
А) ùA & B Б)A & ùB
В) ùA V ùB Г)A V ùB
Д) ù (A & B) Е) ù (ùA & ùB)
Ж) (A & B) V (ùA & ùB) З) ù (A & B) V C & ù B
И) ù (A & B) V ù C & ù B К) (ù A & B) V (A & ù B)
Л) В Å B Å B М) A Å B Å B
Н) A ® B ® B О) ùA ® (ùB & C V (A ® B))
П) ù(A ® ùB) & C V (A ® B) Р) ù(A ® ù(B & C) V (A ® B)
2. Какие из приведенных записей ошибочны и почему
а) NOT A; б) NOT_ABC; в) NOT NOT B; г) C NOT V;
д) A NOT OR B; е) NOT A XOR B; ж) A XOR B ANDC.
3. По заданным булевским выражениям на языке ПАСКАЛЬ написать соответствующие выражения математической логики:
А) not not A and (B xor C) Б)A or true and ùB
В) not A and not B or A and B Г)not (A or not (B or not C))
4. Чему равно значение выражения
А) (A<B) AND (C<=D) AND not E, где A=2, B=3, C=5, D=4, E=FALSE
Б) A DIV TRUNC(B/(2*C)), если A=9, B=26, C=3
В) (X*9)-A, где X=3.2, A=8.7
Г) B OR FALSE, где B=TRUE
Д) X MOD 10 + 1, если X=11
5. С помощью эквивалентных преобразований показать, что
B V A&ùB = B V A.
6. Какие из следущих выражений равны между собой?
А) A|A; A|A|A; A|A|A|A; A|A|A|A|A; A|B; B|A.
Б) A|B|C; A|(B|C); A|A|B|B|C|C.
В) (A ® B) ® С; A ® (B ® С); A ® B; B ® A;
7. Верны ли следующие равенства?
А) (A&ùB V C)&(ùA V B) = B V A ;
Б) (A V B V C)&(ùA V B) = B V A
8. Написать следующие выражения на языке ПАСКАЛЬ, которые для точек с координатами (Х,Ү), находящихся в заштрихованной области,[1] принимают значение true, а за пределами принимают значение false.
А) | Б) | В) | ||||||||
Г) Д)
Е) Ж)
9. Для заданных множеств А и В написать следующие логическое выражения на языке ПАСКАЛЬ, которое для эелемента Х принимает значение 1, если она находится в заштрихованной области А[2], иначе принимает значение 0.
10. Написать логические выражения, принимающие значение true, когда точка (Х,Ү) находится в заштрихованной на рисунке области
11. Написать логические выражения, принимающие значение true, когда точка (Х,Ү) находится в заштрихованной на рисунке области, где окружность радиуса 1 и кривая соответствует Ү=X2.
1)
2)
3)
4)
12. Записать следующие высказывания в виде логических выражений.
А) Если А верно, то В верно;
В) Если из истинности А следует истинность В, то и С истинно
13. Записать функцию из трех переменных F(x1,x2,x3), которое принимает значение 1(истина) в следующих случаях:
А) Если среди значений аргументов есть значение 0(ложь);
Б) Если среди значений аргументов есть значение 1(истина);
В) Если среди значений аргументов значение 1(истина) больше;
Г) Если среди значений аргументов значение 0(ложь) больше;
Д) Если все значения аргументов 0(ложь);
Е) Если все значения аргументов 1(истина);
14. Написать логические выражения для следующих таблиц истинности.
A | B | С | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
15. Написать логические выражения двоичного сумматора на языке ПАСКАЛЬ.
C=A+B, где i-тый разряд суммы определяется следующей таблицей
Ai | Bi | Pi | Ci | Pi+1 |
16. Через таблицы истинности определить значения А и В после выполнения следующих трех операторов: A:=АÅB; B:=АÅB; A:=АÅB ?
По аналогии с языками программирования Паскаль, С++ можно использовать конструкции похожие на условный оператор или использовать конструкции, используемые только в PYTHON
if | If-else | If-elif | If-elif-else |
if <условие> : <инструкция> | if <условие> : <инструкция1> else : <инструкция2> | ||
if <условие1> : <инструкция1> else : if <условие2> : <инструкция2> | if <условие1> : <инструкция1> elif <условие2> : <инструкция2> | ||
if <условие1> : <инструкция1> else : if <условие2> : <инструкция2> else : <инструкция3> | if <условие1> : <инструкция1> elif <условие2> : <инструкция2> else : <инструкция3> |
Для вычисления c=max(a,b) можно применить следующие фрагменты программ:
if a>b then c:=a else c:=b; // – на языке Pascal
if (a>b) c=a; else c=b; // – на языке С++
Данная конструкция на языке Python может быть записана следующим образом:
if a>b : c=a
else : c=b
В виде условного выражения можно записать следующим образом:
с= (a if a>b else b)
Задача. Во входной строке записаны три натуральных числа через пробел. Каждое из чисел не превышает 10100. Нужно вывести максимальное целое число.
По аналогии с языком Паскаль было бы следующее решение[3]:
x,y,z=map(int,input().split()
if x>=y and y>=z : print(x)
elif y>=z : print(y)
else : print(z)
Используя условные выражения можно написать следующую программу:
x,y,z=map(int,input().split()
print(x if x>=y and y>=z else y if y>=z else z)
Используя потоковые функции, можно написать следующую программу:
print(max(map(int,input().split())))
Ввод-вывод
Строки
Строки в Python определяются кавычками «"» или апострофами «'». Внутри кавычек могут присутствовать апострофы или наоборот. Например, строка «Он сказал 'привет'!» будет выведена на экран как
Он сказал 'привет'!
Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «"""».
Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.
Print "Name: %s \n Number: %s \n String: %s" % (my class.name, 3, 3 * "_")
Name: Poromenos
Number: 3
String: ___
strString = """Этот текст расположен
на нескольких строках"""
print "This %(verb)s a %(noun)s." % {"noun": "test", "verb":"is"}
This is a test.
Структуры данных
Python имеет следующие структуры данных:
· Списки (lists). Списки – похожи на одномерные массивы (многомерный массив можно создавать как список включающий список);
· Кортежи (tuples). Кортеж – неизменяемый список;
· Словари (dictionaries). Словарь – тоже список с индексами любого типа, а не только числового. "Массивы" могут содержать данные любого типа, т.е. в массиве могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1. Переменным можно присваивать функции и использовать их соответственно.
Примеры:
spisok = [1, ["другой", "список"], ("a", "в")] #Состав: число, список и кортеж
spisok = ["первый", 2, 3. 14] #Состав списка: строка, целое и дробное число
spisok [0] = "снова первый" #Изменяем 1-й (0-й) элемент списка
spisok [2] = 3.14 #Изменяем последний элемент листа
slovar = {"Key 1": "San 1", 2: 3, "pi": 3.14}#Словарь, с разными индексами
slovar ["pi"] = 3.15 #Изменяем элемент словаря под индексом "pi".
tuplau = (1, 2, 3) #Задаем кортеж
oznlk = len #Объявление синонима функции
print oznlk (spisok) # печатает 3
По-другому, текст может быть заключен в утроенные кавычки: """ или ’’’. Концы строк не нужно “прятать” при использовании утроенных кавычек, но они будут включены в текст.
Строка – последовательность символов с произвольным доступом, Любой символ строки можно получить по его индексу. Первый символ имеет индекс 0. Символ – строка единичной длины. Подстрока может быть определена с помощью среза — двух индексов, разделенных двоеточием.
word=’мисал’
print(word[4]) # напечатает – л
print(word[0:2]) # напечатает – мис
print(word[2:4] ) # напечатает – сал
Строки в языке Python невозможно изменить. Попытка изменить символ в определенной позиции или подстроку вызовет ошибку:
a='123'
print(a,1, 2, sep='=', end = '\n')
a[0]='0'
print(1, 2)
выдаст сообщение
Traceback (most recent call last):
File "C:/Users/1/PycharmProjects/untitled2/22.py", line 3, in <module>
a[0]='0'
TypeError: 'str' object does not support item assignment
Индексы среза имеют значения по умолчанию:
· Опущенный первый индекс считается равным 0, опущенный второй индекс дает длину строки.
Пример:
b=[1,2,3,4,5,6,7]
a=b[:5] # a=[1,2,3,4,5]
c=b[5:] # c=[6,7];
· Если верхняя граница меньше нижней, то возвращается пустая строка;
· Отрицательные индексы в срезах выходящие за пределы обрабатываются равными нулю. Лучший способ запомнить, как определяются индексы в срезе — считать их указывающими между символами, с номером 0 на левой границе первого символа. А правая граница последнего символа имеет индекс равный длине строки.
Например:
b=[1,2,3,4,5,6,7]
a=b[:-2] # a=[1,2,3,4,5]
c=b[-2:] # c=[6,7];
u’Hello World !’ – строка кодировки Unicode
Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.
Print "Name: %s \n Number: %s \n String: %s" % (my class.name, 3, 3 * "_")
Name: Poromenos
Number: 3
String: ___
strString = """Этот текст расположен
на нескольких строках"""
print "This %(verb)s a %(noun)s." % {"noun": "test", "verb":"is"}
This is a test.Можно использовать часть массива, задавая первый и последний индекс через «:». Если нет первого элемента, то отсчет начинается с начала массива, а если нет последнего, то массив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:
spisok = ["Elem 1", 2, 3.14]
print spisok [:] #Выводятся все элементы массива ['Elem 1', 2, 3.14]
print spisok [0: 2] #Выводятся 0-й и 1-й элемент массива. [' Elem 1', 2]
print spisok [-3:-1] #Выводятся элементы от 0-го (-3) до 2-го (-1) ['Elem 1',2]
print spisok [1:] #Выводятся элементы от 1-ого, до последнего [2, 3.14]
Простые конструкции
Основные формы синтаксических конструкций:
1. Python не содержит операторных скобок (begin..end как в pascal или {..} как в Си), вместо этого блоки определяются отступами: пробелами или табуляцией (нужно выполнять только в одной из форм);
2. Вход в блок из операторов осуществляется двоеточием;
3. Однострочные начинаются со знака «#»;
4. Многострочные комментарии начинаются и заканчиваются тремя кавычками «"""»;
5. При присвоении значения переменной используется знак «=»;
6. Знак сравнения значений – «==»;
7. Для добавления значения переменной используется оператор «+=»;
8. Для уменьшения – «-=». Эта операция может взаимодействовать с большинством типов, в том числе со строками.
Примеры:
a = 1 # а присваивается значение 1
a += 2 # значение а увеличивается на 2
a -= 3 # значение а уменьшается на 3
"""Пример многострочного комментария
Строки комментария игнорируются"""
s = "Доброе " # в переменную s записывается строка текста "Доброе "
s += " утро." # в переменную s добавляется строка текста "утро"
print s # напечатается текст “Доброе утро.”
# Следующая строка меняет значения переменных местами.
a, s = s, a
Вот несколько примеров использования функции range, которые объясняют роль ее параметров.
A=list(range(10)) # A=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A=list(range(2,10)) # A=[2, 3, 4, 5, 6, 7, 8, 9]
A=list(range(1,10,2)) # A=[1, 3, 5, 7, 9]
A=list(range(10,2,-2)) # A=[10, 8, 6, 4]
3.4. Потоковый ввод-вывод и
работа с текстовыми файлами
При стандартном потоковом вводе данных используется оператор input(), который устанавливает строковый тип переменного и вводит символьные значения.
Пример:
N=input()
В случае необходимости пропуска строки текстов при вводе можно написать
input()
Если необходимо ввести значения группы переменных, разделенных пробелами, необходимо использовать split()
a,b,c=input().split() # можно написать input().split(‘ ‘)
Если значения разделены символом «,», нужно написать split(‘,‘)
Если при вводе данных требуется запрос на ввод данных, то используется функция raw_input(приглашение), которая выводит на экран приглашение и ожидает ввода пользователя, возвращая то, что ввел пользователь в виде своего значения.
x = int(raw_input ("Введи число:"))
Для вывода используется команда print, которая выводит на печать все свои аргументы в удобочитаемом виде.
Ввод/вывод массива.
Print(‘Количество элементов:')
n=input()
print ':'вводите элементы
x=[]
for x in range(n): x.append(input())
print 'массив:'
for x in x: print (x)
print 'обратно:'
for x in reversed(x):print (x)
Задача с большими числами. Записано два неотрицательных целых числа, не превышающих 10100, по одному в каждой строке. Нужно вывести одно целое число — сумму чисел А и В, без лидирующих нулей.
Можно написать два варианта решения этой задачи
1) аналогично методам решения, предлагаемым на языке Паскаль для малых чисел[4]
A=int(input())
B=int(input())
print(A+B)
2) с использованием потоковых функций.
print(int(input ())+int(input ()))
или
r=input # обозначение input через имя r
print(int(r())+int(r()))
При стандартном потоковом выводе данных используется оператор print(), который преобразует выводимое значение в строковую и выводит.
Пример:
print(N) # выводит значение в текстовой форме.
При выводе нескольких значений между значениями ставится разделитель « » (пробел).
Пример:
print(N, a[N]) – выводит через пробел индекс и значение элемента массива.
В случае необходимости пропуска строки текстов можно написать
input()
Если необходимо ввести значения группы переменных, разделенных пробелами, необходимо использовать split()
a,b,c=input().split() # можно написать input().split(‘ ‘)
Если значения разделены символом «,», нужно написать split(‘,‘)
Для работы с текстовыми файлами
inp = open('input.txt', 'r') – открытие файла inp из 'input.txt'
out = open('output.txt', 'w') – открытие файла out из 'output.txt'
T = int(inp.readline()) – ввод целого числа в переменную Т
out.write(ans + "\n") – вывод значения переменной ans с переходом на новую строку
Операторы
Операторы while, if, for– операторы перемещения.
Оператор whileпока истинно логическое выраңение выполняет блок операторов.
Например;
s = n = 0 while s < 43: s += 12 n += 3 print(n) # напечатает 48 | s | n |
Оператор forсравнивает переменную из списка. Чтобы получить список цифр до числа <san> — используйте функцию range(<san>).
Примеры операторов
rangelist = range (10) # Получаем список из десяти цифр (от 0 до 9)
print rangelist # Печатает эти значения
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist: # number увеличиваясь входит в список...
if number in (3, 4, 7, 9): # Если number входит в кортеж (3, 4, 7, 9)...
break # Операция «break» обеспечивает выход из цикла
else: # необязательно. Условие выполняется, если цикл не был прерван
continue # «continue» продолжает цикл. Хотя здесь это не требуется
pass # Ничего не делать
if rangelist [1] == 2:
print "Второй элемент – 2"
elif rangelist [1] == 3:
print "Второй элемент – 3"
else:
print "Незнайка"
while rangelist[1] == 1:
pass
Задача 1. Для заданного числа n посчитать сумму чисел от 1 до n.
Можно предложить 3 варианта решения.
Вариант 1.
n=int(input()))
s=0
if n>i :
for i in range(1,n+1) :
s+=i
else :
for i in range(1,n-1,-1) :
s+=i
print(s)
Вариант 2.
n=int(input())
if n>0 : s=n*(n+1) // 2
else : s=(2-n)*(n+1) // 2
print(s)
Вариант 3.
n=int(input())
s=(n*n+abs(n)) // 2
print(s if n>0 else 1-s)
Задача 2. Для подсчета числа отрицательных элементов массива можно применить следующую программу;
Вариант 1.
N=int(input())
K=0
for i in range(N) :
x=int(input())
if x<0 :
K+=1
print(K)
Вариант 2.
K=0
for i in range(int(input())) :
if int(input())<0 :
K+=1
print(K)
Вариант 3.
K=0
for i in range(int(input())) :
K+= int(input())<0
print(K)
3) Ввод последователҗности из элементов и подсчет среднего значения.
a = []
N = 2016
S=0
for i in range(0, N):
a.append(int(input()))
S+=a[i]
print(S / N)
2-ой вариант решения данной задачи
N = 2016
print(sum(map(int,input().split())) / N)
Функции
При объявлении функции используется ключевое слово «def». Аргументы функции задаются в скобках. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую.
Ключевое слово «lambda» служит для объявления элементарных функций.
def f (ar1, ar2 = 100, ar3 = "test"):
# ar2 и ar3 - необязательные аргументы, принимают значение, объявленное
# по умолчанию, если не задать им другое значение при вызове функции.
return arg3, arg2, arg1
“”” Функция вызывается со значением 1-го аргумента – "Ar 1", 2-го – по умолчанию, и 3-го - "Named ar". “””
r1, r2, r3 = f ("Ar 1", ar3 = "Named ar")
# r1, r2 и r3 принимают значения "Named ar", 100, "Ar 1" соответственно
print r1, r2, r3 # Named ar 100 Ar 1
# Следующая запись эквивалентна def f(x): return x + 1
fvar = lambda x: x + 1
print fvar (1) # 2
Рекурсивные функции записываются следующим образом:
def F(n):
if n > 0:
G(n - 1)
def G(n):
print('*')
if n > 1:
F(n - 2)
N= int(input())
print(F(n))
Значение чисел Фибоначчи можно оформить через рекурсивную функцию
def F(n):
if n < 2: return 1
else : return F(n - 1)+F(n-2)
n=int(input())
print(F(n))
Значение чисел Фибоначчи можно оформить через рекурсивную функцию
def F(n):
if n < 2: return 1
else : return F(n - 1)* n
n=int(input())
print(F(n))
Функции, возвращающие пустое значение, называют процедурами. В некоторых языках объявления функций и процедур синтаксически различаются. В Python процедуры имеют практически такой же синтаксис как и функции, но не возвращают никаких значений.
Пример 1: Числа фиббоначчи
def F(n):
a=0
b=1
while a<n:
print(a,end=’ ‘)
a,b=b,a+b
F(50)
Результат:
0 1 1 2 3 5 8 13 21 34
Пример 2: Наибольший общий делитель
def NOD(a,b):
while a*b>0:
if a>b : a%=b
else : b%=a
print(150,42)
Результат:
6
Функции, возвращающие пустое значение, называют процедурами. В некоторых языках объявления функций и процедур синтаксически различаются.
В Python процедуры имеют практически такой же синтаксис, как и функции, но не возвращают никаких значений.
def ИМЯ_ПРОЦЕДУРЫ(СПИСОК_ПАРАМЕТРОВ) :
ДЕЙСТВИЕ 1
ДЕЙСТВИЕ 2
…
ДЕЙСТВИЕ N
Пример процедуры, выводящей последовательность чисел Фибоначчи до значения N:
def f(n)
a=0