Учебное справочное пособие по языку Питон для учащихся средней школы
Оценка 4.9

Учебное справочное пособие по языку Питон для учащихся средней школы

Оценка 4.9
Документация +2
docx
информатика
7 кл—11 кл +1
30.03.2022
Учебное справочное пособие по языку Питон для учащихся средней школы
Пособие предназначено для знакомства учащихся 7-8 классов с основами языка Python и помощи в получении навыка написания учебных и экзаменационных программ начальной сложности.
Питон для школьников 7-8 кл.docx

 

 

 

И.М.Чуищев

 

 

 

 

 

 

 

 

ОСНОВЫ  ЯЗЫКА PYTHON

 

 

 

 

Учебное справочное пособие

для учащихся средней школы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Москва, 2022



 

ВВЕДЕНИЕ.. 4

Соглашения языка. 5

Наиболее важные служебные слова. 5

Имена (констант, переменных и других объектов) 5

Типы данных языка Питон. 5

Операторы.. 6

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

Вывод данных из оперативной памяти на экран монитора. 7

Стандартные функции языка Python.. 8

Операции над целыми числами.. 8

Операции // и %... 9

Операция «+» для разных типов данных, операции со строками.. 9

Логический тип данных. 9

ВЕТВЛЕНИЕ.. 10

Общий вид условного оператора. 10

Вложенные ветвления. 10

Неполный условный оператор. 11

Условный оператор. 11

Решение линейного уравнения. 11

Решение квадратного уравнения. 12

ПОВТОРЕНИЕ  (ЦИКЛЫ) 12

Программирование циклов с заданным условием продолжения работы.. 13

Программирование циклов с заданным условием окончания работы.. 13

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

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

ПРОЦЕДУРЫ И ФУНКЦИИ В PYTHON.. 15

Определение функции.. 16

Параметры функции.. 16

Передача нескольких параметров. 16

Функция с возвращаемым значением.. 16

Пример функции, возвращающей значение. 17

РЕКУРСИЯ.. 17

МАССИВЫ  (СПИСКИ) 18

Одномерный список. 18

Способы заполнения списка. 18

Вывод списка. 18

Вычисление суммы элементов списка. 19

Вычисление суммы элементов списка с помощью функции sum() 19

Нахождение наибольшего элемента. 20

Нахождение элемента списка с заданными свойствами.. 20

Подсчет количества элементов. 21

Сортировка списка. 21

Файлы и операции с ними.. 21

Открытие файла. 21

Закрытие файла. 22

Чтение и запись файлов в Python.. 23

Текущая позиция в файлах Python.. 24

Источники и литература: 24

 


 

Пособие предназначено для знакомства учащихся 7-8 классов с основами языка Python и помощи в получении навыка написания учебных и экзаменационных программ начальной сложности.

ВВЕДЕНИЕ

Сфера программирования уже в течение нескольких десятков лет остаётся востребованной, так как постоянно необходимо создавать различные программы, скрипты и прочее. А язык Python (по-русски произносится как — "пайтон", но более распространенная версия произношения — "питон") не только пригоден для различных сфер программирования, но и является достаточно простым в изучении.

Python — один из самых популярных языков в мире, и его популярность всё растёт. В рейтинге TIOBE он занимает третье место, сразу после Java и С.  

Питон весьма «любим» работодателями и используется практически повсеместно как небольшими, так и крупными компаниями. Python активно используется в Google, Yahoo! , IBM и даже NASA и CERN.

Где мы можем встретить применение этого языка? Из самых популярных отраслей — Data Science, автоматизация и веб-разработка. Все чаще Python используется для анализа данных, как в науке, так и коммерческой сфере.

Вот области, в которых активно используется Python: веб-разработка; машинное обучение; интернет вещей; проекты с искусственным интеллектом, нейросети; Data Science,  аналитика; некоторые игры.

 

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

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

По производительности Python относительно медленный язык с повышенным потреблением памяти (по сравнению с C, Go, Java). Этот язык - интерпретируемый, а не компилируемый. Несмотря на это, в большинстве задач гораздо важнее быстро получить результат, нежели ускорить выполнение программы. Особенно это важно для бизнеса или стартапа, где критически важно быстро выпустить продукт «в жизнь» и начать зарабатывать.

Конечно у Python’а есть отрицательные черты: он будет неидеальным выбором для задач, интенсивно использующих память; программы, написанные на Питоне, для использования их в среде Windows необходимо превратить в исполняемые файлы , что увеличивает объём памяти, занимаемый программой, в несколько раз; ему нужно больше времени на тестирование; динамическая типизация (Python не требует, чтобы программисты определяли тип переменной) упрощает и ускоряет написание кода, но может привести к критическим ошибкам и дефектам, поскольку типы переменных не определены явно; программы, написанные на Python, работают медленнее, чем аналогичные программы, разработанные на других языках; на Python невозможно написать драйвер устройства; разные версии языка несовместимы.

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

 

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

И самое, наверное, важное: Python в ближайшие годы не потеряет своей актуальности и востребованности. Он может использоваться и как основной инструмент для разработки программ и приложений, так и для создания расширений уже готовых приложений. Несмотря на недостатки, Python является наиболее удобным и понятным инструментом для написания программ. Недостатки Питона доставляют неудобство, в основном, опытным программистам.


 

Соглашения языка

Алфавит языка программирования Python - набор допустимых символов, которые можно использовать для записи программы: Латинские прописные буквы (A, B, C, …, X Y, Z), латинские строчные буквы (a, b, c,…, x, y, z), арабские цифры (0, 1, 2,…, 8, 9), знаки арифметические, препинания, скобки и некоторые другие символы.

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

В алфавит языка Python включены неделимые элементы (составные символы): знаки не равно, равно (!=  и  ==), знаки больше или равно, меньше или равно (>=  и  <=), начало и конец комментария (""" …. """  и  ''' …. ''')

Строки программы в Python’е выравниваются вплотную к левому краю. В конструкциях ветвления и циклических, «тело» конструкции сдвигается вправо на 4 пробела. Окончание (отсутствие) такого сдвига говорит о том, что ветвление или цикл окончились.

 

Наиболее важные служебные слова языка:

Служебное слово языка Python

Значение служебного слова

and

и

break

прервать

else

иначе

False

ложь

float

вещественный  (с плавающей  точкой)

for

для

if

если

input

ввод

integer

целый

list

список

or

или

print

печать

string

строковый (цепочка символов)

True

истина

while

пока

 

 

Имена (констант, переменных и других объектов):

Ø   не являются служебными словами;

Ø   состоят ТОЛЬКО из букв, цифр и символа подчеркивания;

Ø   начинаются ТОЛЬКО с буквы или символа подчеркивания;

Ø    прописные и строчные буквы РАЗЛИЧАЮТСЯ!

 

 

Типы данных языка Питон:

Название

Обозначение

Допустимые значения

Область памяти

Целочисленный

int

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

Вещественный

float

Любые числа с дробной частью

чаще 8 байт (точность 15 знаков после запятой)

Строковый

str

Любые символы из таблицы Unicode

Логический

bool

True и False

1 байт

 

Тип переменной определяется в тот момент, когда ей присваивается новое значение.

Операторы

Оператор присваивания: <имя переменной> = <выражение>, т.е. то, что стоит справа от знака равенства, присваивается переменной, означенной слева от него.

Оператор сравнения: <имя переменной> == <выражение>, т.е. то, что стоит слева от знака равенства и то, что стоит справа от него, - сравнивается. Это – логическая операция.

 

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

<имя переменной> = input()

Внимание! Переменная, полученная в результате этой операции, будет строкового типа (str).

При этом оператор input ожидает от пользователя ввод данных с клавиатуры и, после нажатия им клавиши Enter, вносит то, что ввел пользователь, в значение переменной.

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

Ввод переменных целого типа:

<имя переменной> = int (input()) 

Переменная из  строковой преобразуется в целую.

Ввод переменных вещественного типа  (float):

<имя переменной> = float (input())

Переменная из  типа str преобразуется в тип float.

 

Ввод переменных c приглашением:

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

Приглашение вводится внутри скобок функции input. Если это постоянная строка, то она выделяется кавычками. Если это ранее определенное значение, занесенное в некоторую переменную, то внутрь скобок input ставится имя этой переменной БЕЗ кавычек.

hello = ‘Жду ввод данных’

input (‘Жду ввод данных’)

или же

input (hello)

 

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

a, b = map ( int, input().split() )

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

То есть, при вводе числа ввести через пробел, например:

4  5  <Enter>        

 

 

Вывод данных из оперативной памяти на экран монитора выполняет оператор вывода print.

Общий вид:

print(<выражение 1>, < выражение 2>,  ..., < выражение N>)

Выражения  - символьные, числовые, логические переменные и константы.

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

Пример:   

s = 10

print ('s= ', s) 

На экране будет вывод:

s= 10      

 

Вывод оператора print может быть модифицирован под потребности пользователя.

Вариант организации вывода

Оператор вывода

Результат

По умолчанию

print (1, 20, 300)

1  20  300

Убрать разделители-пробелы

print (1, 20, 300, sep="")

120300

Добавить другой разделитель

print (1, 20, 300, sep=", ")

1, 20, 300

 

Также можно модифицировать формат вывода:

Оператор вывода

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

a = 4

print ("a=", "{:5d}{:5d}". format(a, a*a))

a=◦◦◦◦4◦◦◦16

т.е. десятичные числа из 5 знаков, предваряемые пробелами, если число занимает меньше 5 знакопозиций

a =1/3

b =1/9

print ("{:7.3f}{:7.3f}". format (a, b))

◦◦0.333◦◦0.111

т.е. вещественные (дробные) числа, три знака после запятой (разделителя). Всего выводится 7 знаков, включая разделитель. Если число знаков меньше, слева ставится необходимое число пробелов.

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

d -  вывод целого значения

 f – вывод вещественного значения

 

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

r = float(input('Введите радиус: '))

c  = 2 * 3.14 * r

s = 3.14 * r * r   #либо s = 3.14 * r ** 2

print ("c=", "{:6.4f}". format(c))

print ("s=", " {:6.4f}". format(s))

 

Стандартные функции языка Python:

Функция

Назначение

Тип аргумента

Тип результата

abs(х)

Модуль x

int, float

Такой же, как у аргумента

round(х)

Округление вещественного х до заданного количества знаков после запятой

float

int, float

int(х)

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

str, float

int

Прочие математические функции собраны в модуле  math, подключение модуля:

from math import *

sqrt(x)

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

int, float

float

Датчик случайных чисел:  from random import *

randint(a,b)

Целое случайное число в интервале [a, b]

int

int

random ()

Вещественное случайное число в интервале  [0, 1)

float

 

print('Исследование функций round и int ')

x = float(input ('Введите вещественное (дробное) число х: '))

print('Округление - ', round(x))

print('Целая часть - ', int(x))

 

Операции над целыми числами:

 

Операция

Обозначение

Тип результата

Сложение

+

int

Вычитание

-

int

Умножение

*

int

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

**

int

Получение целого частного

//

int

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

%

int

Деление

/

float

 

Операции // и %

13 // 5 = 2

13 % 5 = 3

234 // 100 = 2

234 % 100 = 34

34 // 10 = 3

34 % 10 = 4

234 % 10 = 4

 

Трёхзначное число можно представить в виде следующей суммы: x = a·100 + b·10 + c, где а, b, с - цифры числа.

Программа нахождения суммы цифр вводимого с клавиатуры целого трёхзначного числа:

 

print ('Нахождение суммы цифр трёхзначного числа');

x = int(input('Введите исходное число: '))

а = х // 100

b = x % 100 // 10

c = x % 10

s = a + b + c

print('s= ', s)

 

Операция «+» для разных типов данных, операции со строками

Для строковых и числовых типов данных операция + действует по-разному. Для числовых – это сложение, а для строковых – конкатенация. Конкатенация — это сложение строк, в результате чего они соединяются друг с другом.

a = 2

b = 5

s = a + b

print (s)   #на экран будет выведено число 5

 

string_1 = "Привет, друзья! "

string_2 = "Хотите выучить Python? "

string_3 = "Это не сложно!"

print(string_1 + string_2 + string_3)  #выведет на экран «Привет, друзья! Хотите выучить Python? Это не сложно!»

 

string = "Я " + "изучаю " + "Python!"

print(string)   #выведет на экран «Я изучаю Python

 

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

string = "Привет" * 5

print(string)   #На экран будет выведено «ПриветПриветПриветПриветПривет»

 

 

Логический тип данных

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

False  и True;

False < True.

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

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

 

Логическим переменным можно присваивать значения логических выражений, построенных с помощью логических функций и (and), или (or), не (not).

 

Логическая операция

в Python

Название операции

and

конъюнкция (логическое умножение)

or

дизъюнкция (логическое сложение)

not

отрицание (инверсия)

 

Пусть ans - логическая переменная,

            N   -  целая переменная.

В результате выполнения оператора присваивания

ans = n % 2 == 0

переменной ans будет присвоено значение True при любом чётном n и False в противном случае.

Сначала происходит операция сравнения (==, <, >, <=, >=), затем присваивание полученного результата логической переменной.

 

# является ли число чётным?

n = int (input ('Введите исходное число: '))

ans = n% 2 == 0

print ('Число ', n, ' является чётным - ', ans)

 

 

# Является ли треугольник равнобедренным?

a = int(input('Введите длину стороны а: '))

b = int(input('Введите длину стороны b: '))

c = int(input('Введите длину стороны c: '))

ans = a == b or а == с or b == c

print ('Треугольник со сторонами  ', а, ', ',b, ', ', с, '  является равнобедренным –  ', ans)

 

ВЕТВЛЕНИЕ

Общий вид условного оператора

 

Полная форма условного оператора:

if <условие>: <оператор_1>

else: <оператор_2>

 

Неполная форма условного оператора:

if <условие> :  <оператор>

 

Условие может быть как операцией отношений >=, <=, !=, ==, так и логической операцией and, or, not

Вложенные ветвления

if  <условие1> :

             if <условие2> :       #  вложение ветвления

                        <оператор1>

             else:   <оператор2>

else:  <оператор3>

 

Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор – они все должны иметь одинаковый отступ:

if   <условие>:

      <оператор 1>

      <оператор n>

else:

      <оператор x1>

      <оператор xm>

 

Если после else сразу следует еще один оператор if, можно использовать каскадное ветвление со служебным словом elif (сокращение от else-if):

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

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

if  <условие1>:  <оператор 1>

elif <условие2>: <оператор 2>

elif <условие n>: <оператор n>

else : <оператор m>

 

 

Неполный условный оператор

print ('Нахождение наибольшей из трёх величин')

a = int (input ('Введите а: '))

b = int (input ('Введите b: '))

c = int (input ('Введите c: '))

y = a

if  b > y:

      y = b

if  c > y:

      y = c

print ('y=', y)

 

Условный оператор

print ('Определение принадлежности точки отрезку')

a = int (input ('Введите а: '))

b = int (input ('Введите b: '))

x = int (input ('Введите x: '))

if  х >= а and x <= b:

     print ('Точка принадлежит отрезку')

else:

     print ('Точка не принадлежит отрезку')

 

 

Решение линейного уравнения

 

# Решение  линейного уравнения

a = float( input ('Введите коэффициент а>>'))

b = float( input ('Введите коэффициент b>>'))

if  a != 0:

       x = -b/ a

       print ('Корень  уравнения x=', x)

elif  b != 0:

       print ('Корней нет')

else:  

       print(' x–любое число')

 

Решение квадратного уравнения

 

from  math  import *   # подключение модуля для вычисления квадратного корня

# Решение квадратного уравнения

print ('Введите коэффициенты а, b, с>>')

a = float (input ('a='))

b = float (input ('b='))

c = float (input ('c='))

d = b * b – 4 * a *  c

if d<0:

       print ('Корней  нет')

elif d == 0:

       x = – b/2/ a

       print ('Корень уравнения x=', "{:6.4f}". format(x))

else:

x1 = (-b+sqrt(d))/2/ a

x2 = (-b – sqrt(d))/2/ a

print ('Корни   уравнения:')

print ('x1=', "{:6.4f}". format(x1))

print ('x2=', "{:6.4f}". format(x2))

 

 

 

ПОВТОРЕНИЕ  (ЦИКЛЫ)

 

В языке Python имеются два вида операторов цикла:

while (цикл-ПОКА)

for (цикл с параметром).

Если число повторений тела цикла известно, то лучше воспользоваться оператором for;

в остальных случаях используется оператор while

 

 

Программирование циклов с заданным условием продолжения работы

 

Общий вид оператора:

while  <условие> : 

     <оператор>

<условие> - логическое выражение;
пока оно истинно, выполняется тело цикла;

<оператор> - простой или составной оператор, с помощью которого записано тело цикла.

 

Программирование циклов с заданным условием окончания работы

В языке Python нет цикла с заданным условием окончания работы, но его можно организовать с помощью цикла while:

while  True:

       <операторы>

       if <условие>: break

Такой цикл будет выполняться бесконечно, потому что условие True всегда истинно. Оператора break обеспечивает выход из цикла если условие истинно (в переводе с англ. – «прервать», досрочный выход из цикла).

 

Программирование циклов с заданным числом повторений

Общий вид оператора:

for  <параметрin  range (k, n, m):

    <оператор>

 

 

<параметр> - переменная целого типа

range() – диапазон значений:

k начальное значение переменной (по умолчанию равен 0)

nконечное значение переменной, не включая последнее

m – шаг изменения переменной, по умолчанию равен 1

in range(2,8) – здесь k=2, n=8.   in range(25) – здесь присутствует только n=25.

После каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условие выхода из цикла - достижение параметром конечного значения.

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

a= float(input (' Введите основание а>>'))

n= int(input (' Введите показатель n>>'))

y=1

for i  in  range(n): 

      y = y * a

print('y=', y)

# цикл будет работать от 0 до n-1

# ровно n раз

 

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

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

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

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

Воспользуемся циклом с постусловием

k1 = k2 = 0

while True:

      n = int (input (' Введите целое число: ‘))

      if n > 0:

           k1 += 1

      if n < 0:

           k2 += 1

      if n == 0: break

print ('Введено: ')

print('положительных чисел - ', k1)

print('отрицательных чисел - ', k2)

Ввод осуществляется до тех пор, пока не будет введён ноль.

Теперь воспользуемся циклом с предусловием

Работа продолжается, пока n не равно 0.

Воспользуемся оператором while:

n = int (input ('Введите целое число: '))

k1 = k2 = 0

while n != 0:

       if n > 0:

             k1 += 1

       if n < 0:

             k2 += 1

       n = int (input ('Введите целое число: '))

print ('Введено: ')

print ('положительных - ', k1);

print ('отрицательных - ', k2)

 

 

 

ПРОЦЕДУРЫ И ФУНКЦИИ В PYTHON

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

def  <имя_процедуры> (<список параметров>):

        <операторы>

 

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

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

 

Алгоритм Евклида - процедура для нахождения НОД

 

Определение функции

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

def имя_функции(параметры):

    """docstring"""

    инструкция1

    инструкция2

    ...

    ...

    return [выражение]

 

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

Первой инструкцией в теле функции может быть строка, которая называется docstring. Она описывает функциональность функции/класса, то есть сообщает в виде комментария, что именно делает данная функция. Строка docstring не является обязательной.

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

Параметры функции

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

Пример функции с аргументами:

def welcome(user_name):

    print('Welcome, ' + user_name + '!')

 

welcome('Вася') # вызов функции с параметром

Параметры функции могут иметь аннотацию для указания типа аргумента с использованием синтаксиса parameter:type. Например: «def welcome(user_name:str):»

 

Передача нескольких параметров

Функция может иметь множество параметров.

def welcome(first_name:str, last_name:str):

    print('Welcome, ' + first_name + ' ' + last_name + '!')

 

welcome('Anton', 'Chekhov') # передача аргументов в функцию

 

Функция с возвращаемым значением

При завершении выполнения, функция может возвращать внешнему коду какое-то результирующее значение с помощью оператора return.

def get_product(a, b):

    return a * b

 

Пример:

result = get_product(6, 7)

print(result)

result = get_product(3, get_product(4, 5))

print(result)

 

Вывод:

42

60

 

Пример функции, возвращающей значение.

Поиск максимального числа:

def  max_2 (x, y):

      if x > y: maxXY = x                                                     

      else:  maxXY = y

      return maxXY

a = int(input(' введи первое число: '))

b = int(input(' введи второе число: '))

c = int(input(' введи третье число: '))

d = int(input(' введи четвёртое число: '))

f = max_2( max_2(a, b), max_2(c, d))

print('f =', f)

 

 

РЕКУРСИЯ

http://www.goldenmuseum.com/0206002.gifПоследовательность Фибоначчи. В январе Саше подарили пару новорождённых кроликов. Через два месяца они дали первый приплод - новую пару кроликов, а затем давали приплод по паре кроликов каждый месяц. Каждая новая пара также даёт первый приплод (пару кроликов) через два месяца, а затем - по паре кроликов каждый месяц. Сколько пар кроликов будет у Саши в декабре?

Числа 1, 1, 2, 3, 5, 8, … образуют так называемую последовательность Фибоначчи, названную в честь итальянского математика, впервые решившего соответствующую задачу ещё в начале XIII века.

Пусть f(n) количество пар кроликов в месяце с номером n.

По условию задачи:

f(1) = 1,

f(2) = 1,

f(3) = 2.

Из двух пар, имеющихся в марте, дать приплод в апреле сможет только одна: f(4) = 3.

Из пар, имеющихся в апреле, дать приплод в мае смогут только пары, родившиеся в марте и ранее:

 f(5) = f(4) + f(3) = 3 + 2 = 5.

  В общем случае:

 f(n)= f(n –1)+ f(n – 2), n >= 3.

 

def f(n):

  if (n == 1) or (n == 2):

       f = 1

  else: f = f(n-1) + f(n-2)

  return f

def f(n):

     if n == 1 or n == 2:

         return 1

     else:

         return f(n-1) + f(n-2)

 

Полученная функция рекурсивная - в ней реализован способ вычисления очередного значения функции через вычисление её предшествующих значений.

 

МАССИВЫ  (СПИСКИ)

Массив – это совокупность элементов, которым присвоено общее имя, доступ к отдельному элементу массива осуществляется по его номеру (индексу)

Для языка Python: список =  массив

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

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

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

 

Одномерный список

Решение разнообразных задач, связанных с обработкой списков, базируется на решении таких типовых задач, как:

   - суммирование элементов списка;

   - поиск элемента с заданными свойствами;

   - сортировка списка.

 

Способы заполнения списка

1 способ. Явное заполнение

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

b = [1, -2, 3, 5, 0]    # список из пяти элементов одного типа

# список из пяти элементов разного типа:

my = ['abc', 'абв', 5, '78', 643]

 

2 способ Ввод каждого значения с клавиатуры:

N=10    # размер списка

A=[ 0]*10

for i in range(N):

     A[i] = (int (input() ) )   # добавить в каждый элемент списка

 

3 способ. Заполнение случайными числами

from random import randint 

# подключить библиотеку случайных чисел

N = 10 # размер списка

A=[ 0]*10

for i in range(N):

     A[i] = randint(0,99)   #присваивание очередному 

        элементу случайного числа от 0 до 99

4 способ. С помощью оператора присваивания (по формуле):

for i in range(10):

      A[i] = i**2    # элемент равен квадрату индекса

 

 

Вывод списка

1 способ. Элементы массива можно вывести в строку, разделив их запятой:

for i in range(N):

      print ( A[i], end = ’,’ )     или     print (*A, sep = ‘,’)

 

2 способ. Вывод в столбик:

for i in range(10):

      print (A[i])

 

Вывод с комментариями:

for i in range(N):

      print ('A[', i, ' ]= ',A[i])

 

 

Заполнение списка случайными числами и вывод элементов списка

N = 10

A = [0]*N

from random import randint

for i in range(N):

      A[i] = randint(0,99)

for i in range(N):

      print ('A[', i, ' ]= ',A[i])

 

 

 

Заполнение списка
Вывод списка
 

 

 

 

 

 


Вычисление суммы элементов списка

Суммирование элементов списка осуществляется за счёт поочерёдного добавления слагаемых: 

Переменной s присваивается начальное значение 0 – число, не влияющее на результат сложения

На каждом шаге цикла к переменной s добавляется значение очередного элемента списка s.

 

N = 10

A = [0]*N

from random import randint

for i in range(N):

       A[i] = randint(0,99)

s = 0

for i in range(N):    # Основной фрагмент программы

       s += A[i]

for i in range(N):

      print ('A[', i, ' ]= ', A[i])

print('s=', s)

 

Вычисление суммы элементов списка с помощью функции sum()

N = 10

A = [0]*N

from random import randint

for i in range(N):

      A[i] = randint(0,99)

s = sum(A)

for i in range(N):

     print ('A[', i, ' ]= ', A[i])

print('s=', s)

 

 

Типовые задачи поиска

Нахождение наибольшего (наименьшего) элемента списка

Нахождение элемента списка, значение которого равно заданному

 

Нахождение наибольшего элемента в стопке карточек с записанными числами:

1)    Взять верхнюю карточку, записать на доске (запомнить) число как наибольшее.

2)    Взять следующую карточку, сравнить числа. Если на карточке число больше, то стереть старую запись и записать это число.

3)    Повторить действия, описанные в пункте 2 для всех оставшихся карточек.

ВАЖНО!!  При организации поиска наибольшего элемента списка правильнее запомнить его индекс.

N = 10

A = [0]*N

from random import randint

for i in range(N):

       A[i] = randint(0,99)

       print ('A[', i, ' ]= ', A[i])

imax = 0

for i in range(1,N):

      if A[i] > A[imax]:  imax =  i

print(' наибольший элемент: ', A[imax])  

 

Нахождение элемента списка с заданными свойствами

Результатом поиска элемента, значение которого равно заданному, может быть:

         n - индекс элемента списка такой, что a[n]= x, где х - заданное число;

          сообщение о том, что искомого элемента в списке не обнаружено.

 

Поиск элемента, равного 50

A = [0]*10

from random import randint

for i in range(10):

       A[i] = randint(0,99)

       print ('A[', i, ' ]= ', A[i])

m = -1

for i in range(0,10):

      if A[i] == 50:  m i

if m == -1:

      print(' элемента со значением, равным', x,  'нет')

else: print(' индекс элемента, равного  заданному, ', m)  

Будет найден последний из элементов, удовлетворяющих условию.

 

A = [0]*10

from random import randint

for i in range(10):

       A[i] = randint(0,99)

       print ('A[', i, ' ]= ', A[i])

i = 0

while True:

      if A[i] == 50:

          print ( "A[", i, "]=", x, sep = "" )

          break

      i +=1

      if i ==10:

                print("нет")

                break

Будет найден первый из элементов, удовлетворяющих условию.

 

Подсчет количества элементов

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

# заполнение и вывод списка…

k = 0

for i in range(10):

      if A[k] > 50: k += 1

print("k=", k)

 

Сумма значений элементов, удовлетворяющих условию

A = [0]*10

from random import randint

for i in range(10):

       A[i] = randint(0,99)

       print ('A[', i, ' ]= ', A[i])

s = 0

for i in range(10):

      if A[i] > 10  and A[i] < 30:  s += A[i]

print(‘s=‘, s)

 

Сортировка списка

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

1.    В списке выбирается максимальный элемент

2.    Максимальный и первый элемент меняются местами (первый элемент считается отсортированным) 

3.    В неотсортированной части списка снова выбирается максимальный элемент; он меняется местами с первым неотсортированным элементом списка

Действия пункта 3 повторяются с неотсортированными элементами списка, пока не останется один неотсортированный элемент (минимальный)

A = [0]*10

from random import randint

for i in range(10):

       A[i] = randint(0,10)

print (A)

for i in range(n-1):

       imax = i

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

              if A[j] > A[imax]: imax = j

       A[i],A[imax] = A[imax], A[i]      

 print(A)

 

 

Файлы и операции с ними

Файл — это набор данных, сохраненный в виде последовательности битов на компьютере. В Python существует два типа файлов:

1.    Текстовые

2.    Бинарные

 

Открытие файла

Метод open()

f = open(file_name, access_mode)

Где,

·         file_name = имя открываемого файла

·         access_mode = режим открытия файла. Он может быть: для чтения, записи и т. д. По умолчанию используется режим чтения (r), если другое не указано.

 

Полный список режимов открытия файла:

Режим

Описание

r

Только для чтения.

w

Только для записи. Создаст новый файл, если не найдет с указанным именем.

rb

Только для чтения (бинарный).

wb

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

r+

Для чтения и записи.

rb+

Для чтения и записи (бинарный).

w+

Для чтения и записи. Создаст новый файл для записи, если не найдет с указанным именем.

wb+

Для чтения и записи (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.

a

Откроет для добавления нового содержимого. Создаст новый файл для записи, если не найдет с указанным именем.

a+

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

ab

Откроет для добавления нового содержимого (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.

ab+

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

 

Пример

f = open('example.txt','r')  # открыть файл из рабочей директории в режиме чтения
fp = open('C:/xyz.txt','r')  # открыть файл из любого каталога

В этом примере f — переменная-указатель на файл example.txt.

 

Закрытие файла

Метод close()

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

Существуют следующие способы:

Способ №1

f = open('example.txt','r')
# далее - работа с файлом
f.close()

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

Способ №2

Конструкция try/finally. Она гарантирует, что в случае, если после открытия файла операции с ним приводят к исключениям, он закроется автоматически.

f = open('example.txt','r')
try:
   # далее - работа с файлом
finally:
   f.close()

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

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

Способ №3

Инструкция with

В этом случае инструкция close не нужна, потому что with автоматически закроет файл.

with open('example.txt') as f:
    # далее - работа с файлом
 

Чтение и запись файлов в Python

Функция read() - используется для чтения содержимого файла после открытия его в режиме чтения (r).

file.read(size)

Где,

·         file = объект файла

·         size = количество символов, которые нужно прочитать. Если не указать, то файл прочитается целиком.

Пример

f = open('example.txt','r')
f.read(7)  # чтение 7 символов из example.txt
Выдача - 'This is '

Интерпретатор прочитал 7 символов файла и если снова использовать функцию read(), то чтение начнется с 8-го символа.

f.read(7)  # чтение следующих 7 символов
Выдача - ' a text'
 

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

 

Пример

Создадим файл test.txt с нескольким строками:

This is line1.
This is line2.
This is line3.

 

x = open('test.txt','r')
x.readline()  # прочитать первую строку
>>> This is line1.
x.readline(2)  # прочитать вторую строку
>>> This is line2.
x.readlines()  # прочитать все строки
>>> ['This is line1.','This is line2.','This is line3.']

Обратите внимание, как в последнем случае строки отделены друг от друга.

 

Функция write() - используется для записи в файлы, открытые в режиме записи. Если пытаться открыть файл, которого не существует, в этом режиме, тогда будет создан новый.

            file.write(string)

Пример

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

f = open('xyz.txt','w')  # открытие в режиме записи
f.write('Hello \n World')  # запись Hello World в файл
>>> Hello
>>> World
f.close()  # закрытие файла
 

Текущая позиция в файлах Python

В Python возможно узнать текущую позицию в файле с помощью функции tell(). Таким же образом можно изменить текущую позицию командой seek().

Пример

f = open('example.txt')  # example.txt, который мы создали ранее
f.read(4)  # давайте сначала перейдем к 4-й позиции
>>>  This
f.tell()  # возвращает текущую позицию
>>>  4
f.seek(0,0)  # вернем положение на 0 снова
 

 

Источники и литература:

1.    Марк Лутц, Изучаем Python, 4-е издание, ISBN: 978-5-93286-159-2, 2010 Символ-Плюс O``Reilly

2.    Дэвид М. Бизли, Python. Подробный справочник, 4-е издание, ISBN: 978-5-93286-157-8, 2012, Символ-Плюс, High tech

3.    Николай Прохоренок, Владимир Дронов, Python 3 и PyQt 5. Разработка приложений, ISBN: 978-5-9775-3978-4, 2018, BHV-СПб

4.    Марк Саммерфилд, Программирование на Python 3. Подробное руководство, ISBN: 978-5-93286-161-5, 2009, Символ-Плюс

5.    https://pythonru.com/osnovy/

6.    https://bosova.ru/metodist/authors/informatika/

7.    https://www.specialist.ru/dictionary/definition/python

8.    https://pythonworld.ru/samouchitel-python

9.    https://www.youtube.com/playlist?list=PL0lO_mIqDDFXgfuxOEDTCwsWmKezOaDTu


 

10. Скачано с www.znanio.ru

И.М.Чуищев ОСНОВЫ

И.М.Чуищев ОСНОВЫ

Учебное справочное пособие по языку Питон для учащихся средней школы

Учебное справочное пособие по языку Питон для учащихся средней школы

Учебное справочное пособие по языку Питон для учащихся средней школы

Учебное справочное пособие по языку Питон для учащихся средней школы

Пособие предназначено для знакомства учащихся 7-8 классов с основами языка

Пособие предназначено для знакомства учащихся 7-8 классов с основами языка

Соглашения языка Алфавит языка программирования

Соглашения языка Алфавит языка программирования

Целочисленный int сколь угодно большие, размер ограничен оперативной памятью

Целочисленный int сколь угодно большие, размер ограничен оперативной памятью

Ввод двух значений в одной строке

Ввод двух значений в одной строке

Пример программы, рассчитывающей длину окружности и площадь круга по введенному пользователем радиусу: r = float ( input ('Введите радиус: ')) c = 2 * 3

Пример программы, рассчитывающей длину окружности и площадь круга по введенному пользователем радиусу: r = float ( input ('Введите радиус: ')) c = 2 * 3

Операции // и % 13 // 5 = 2 13 % 5 = 3 234 // 100 = 2 234 % 100 = 34 34…

Операции // и % 13 // 5 = 2 13 % 5 = 3 234 // 100 = 2 234 % 100 = 34 34…

Логическим переменным можно присваивать значения логических выражений, построенных с помощью логических функций и (and), или (or), не (not)

Логическим переменным можно присваивать значения логических выражений, построенных с помощью логических функций и (and), или (or), не (not)

Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор – они все должны иметь одинаковый отступ: i f…

Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор – они все должны иметь одинаковый отступ: i f…

Решение квадратного уравнения from math import * # подключение модуля для вычисления квадратного корня #

Решение квадратного уравнения from math import * # подключение модуля для вычисления квадратного корня #

Программирование циклов с заданным условием продолжения работы

Программирование циклов с заданным условием продолжения работы

Программирование циклов с заданным числом повторений

Программирование циклов с заданным числом повторений

Теперь воспользуемся циклом с предусловием

Теперь воспользуемся циклом с предусловием

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

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

Пример функции, возвращающей значение

Пример функции, возвращающей значение

МАССИВЫ (СПИСКИ) Массив – это совокупность элементов, которым присвоено общее имя, доступ к отдельному элементу массива осуществляется по его номеру (индексу)

МАССИВЫ (СПИСКИ) Массив – это совокупность элементов, которым присвоено общее имя, доступ к отдельному элементу массива осуществляется по его номеру (индексу)

Вывод с комментариями : for i in range(N): print ('A[', i, ' ]= ',A[i])

Вывод с комментариями : for i in range(N): print ('A[', i, ' ]= ',A[i])

Нахождение наибольшего элемента в стопке карточек с записанными числами : 1)

Нахождение наибольшего элемента в стопке карточек с записанными числами : 1)

Подсчет количества элементов

Подсчет количества элементов

Он может быть: для чтения, записи и т

Он может быть: для чтения, записи и т

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

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

This is line1 . x . readline (2) # прочитать вторую строку >>>

This is line1 . x . readline (2) # прочитать вторую строку >>>
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
30.03.2022