SlideShare una empresa de Scribd logo
1 de 58
Программирование
на языке Python
1.Введение
2.Ветвления
3.Сложные условия
4.Циклы
5.Циклы с условием
6.Функции
© C. Ефимов, 2013

1
2

Программирование
на языке Python
Тема 1. Введение

© C. Ефимов, 2013
Языки программирования
• Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде
процессора (Ассемблер)
• Языки высокого уровня – приближены к
естественному (английскому) языку, легче
воспринимаются человеком, не зависят от
конкретного компьютера
• для обучения: Бейсик, Паскаль, Python
• профессиональные: С++, Python, Паскаль
• для задач робототехники и искусственного
интеллекта: Пролог, ЛИСП, С++, Python
• для Интернета: HTML, CSS, JavaScript, Java,
Python, PHP, ASP

3
Язык Python

1991 – разработан Гвидо ван Россумом
• объектно-ориентированный язык
• успешно применяться в Google

4
Программа
Программа – это
• алгоритм, записанный на каком-либо языке
программирования
• набор команд для компьютера
Команда – это описание действий, которые
должен выполнить компьютер.
• откуда взять исходные данные?
• что нужно с ними сделать?
Переменная – изменяющаяся величина,
имеющая имя (ячейка памяти).
Функция – вспомогательный алгоритм для
выполнения вычислений (вычисление
квадратного корня, sin).

5
Пример простейшей программы:
print(‘Сложим два числа А и B’)
A=2
B=3
C=A+B
print(C)

6
Все программы строятся по Алгоритму
Алгоритм – это четко определенный план
действий для исполнителя.

Свойства алгоритма
• дискретность: состоит из отдельных шагов
(команд)
• понятность: должен включать только команды,
известные исполнителю (входящие в СКИ)
• определенность: при одинаковых исходных
данных всегда выдает один и тот же результат
• конечность: заканчивается за конечное число
шагов
• массовость: может применяться многократно при
различных исходных данных
• корректность: дает верное решение при любых
допустимых исходных данных

7
Блок-схема линейного алгоритма
начало

блок «начало»

ввод a, b

блок «ввод»

C = a + b

блок «процесс»

вывод c

блок «вывод»

конец

блок «конец»

8
Переменные
Язык Python чувствителен к регистру. Переменная
Z и z – разные переменные. Python, в отличие от
многих языков, не требует описания переменных.
Типы переменных:
• int
{ целая }
{ вещественная }
• float
{ список, аналог массивов}
• list
{ символьная строка }
• str
• bool
{ логическая }
Объявление переменных (выделение памяти):

int(“88”) результат 88
str(88) результат “88”
float(88) результат 88.00

9
Имена программы, констант, переменных
Имена могут включать
• латинские буквы (A-Z)
заглавные и строчные буквы не различаются
• цифры

имя не может начинаться с цифры
• знак подчеркивания _
Имена НЕ могут включать
• русские буквы
• пробелы
• скобки, знаки +, =, !, ? и др.
Какие имена правильные??

AXby
R&B
4Wheel
Вася
“PesBarbos”
TU154
[QuQu]
_ABBA
A+B

10
11

Как изменить значение переменной?
Оператор – это команда языка программирования
высокого уровня.
Оператор присваивания служит для изменения
значения переменной.
Пример:

a=5
b=a+2
a=b*4
print(a)

a

5

?
5

b
?
7

5+2

a

28
5

7*4
12

Оператор присваивания

<имя переменной> = <выражение>;
Арифметическое выражение может включать
• имена переменных
• знаки арифметических операций:
+ *
/
//
%
**
умножение

деление

• вызовы функций
• круглые скобки ( )

деление
нацело

остаток от
деления
Возведение
в степень
Какие операторы неправильные?
имя переменной должно
быть слева от знака =

a :=
10 =
y =
b =
x =
a =

5
x
7,8
2.5
2*(a + y)
b + x

целая и дробная часть
отделяются точкой

13
Порядок выполнения операций
• вычисление выражений в скобках
• умножение, деление, //, % слева направо
• сложение и вычитание слева направо
2 3 5 4 1
7 8 6 9
Z = (5*a*c+3*(c-d))/a*(b-c)/ b
a 2 + 5c 2 − d ( a + b)
x=
(c + d )(d − 2a )

5ac + 3(c − d )
z=
(b − c)
ab

2 6 3 4 7 5 1
12 8 11 10 9
X =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a))

14
15

Оператор ввода
a=input( )

{ ввод значения переменной a}

a=input(“Введите число”)
c = a + 2
print ( ‘c=“, c )

Протокол:

компьютер

Введите число
25
пользователь
c=27
Оператор вывода
print ( a ) { вывод значения переменной a}
print (' Hello!‘) { вывод текста}
print ( ‘Otvet: ', c ) { вывод текста и
значения переменной c}
print ( a+b ) { вывод суммы чисел }

16
Сложение двух чисел
Задача. Ввести два целых числа и вывести на
экран их сумму.
Простейшее решение:
a=input()
b=input()
c = a + b
print ( c )

17
Форматирование вывода
import math
x=math.pi
print ('Pi=',"%.50f" % (x))

18

вызов
библиотеки

в дробной
части

Результат выполнения программы:
Pi=3.141592653589793115997963468544185
16159057617187500
Задания
«4»: Ввести три числа, найти их сумму и
произведение.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140

«5»: Ввести три числа, найти их сумму,
произведение и среднее арифметическое.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33

19
20

Программирование
на языке Python
Тема 2. Ветвления

© C. Ефимов, 2013
Разветвляющиеся алгоритмы
Задача. Ввести два целых числа и вывести на экран
наибольшее из них.
Идея решения: надо вывести на экран первое число,
если оно больше второго, или второе, если оно больше
первого.
Особенность: действия исполнителя зависят от
некоторых условий (если … иначе …).
Алгоритмы, в которых последовательность шагов
Алгоритмы, в которых последовательность шагов
зависит от выполнения некоторых условий, называются
зависит от выполнения некоторых условий, называются
разветвляющимися.
разветвляющимися.

21
22

Вариант 1. Блок-схема
начало

блок
«решение»

ввод a,b
да

a > b?
max = a

полная
форма
ветвления

нет

max = b

вывод max
конец

?

Если a = b?
Вариант 1. Программа

print(‘input 2 number‘)
a=input()
b=input()
if a > b :
max = a
else :
max = b
print (‘Max number', max)

23
Условный оператор
if <условие> :
{что делать, если условие верно}
else :
{что делать, если условие неверно}
Особенности:
• вторая часть (else …) может отсутствовать
(неполная форма)

24
25

Вариант 2. Блок-схема
начало
ввод a,b
max = a
да

b > a?
max = b

вывод max
конец

нет

неполная
форма
ветвления
Вариант 2. Программа

print(‘input 2 number‘)
a=input()
b=input()
неполная
форма
max = a
условного
if b > a :
оператора
max = b
print (‘Max number', max)

26
Задания
«4»: Ввести три числа и найти наибольшее из них.
Пример:

Введите три числа:
4 15 9
Наибольшее число 15
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:

Введите пять чисел:
4
15
9
56
4
Наибольшее число 56

27
28

Программирование
на языке Python
Тема 3. Сложные условия

© C. Ефимов, 2013
Сложные условия
Задача. Фирма набирает сотрудников от 25 до 40 лет
включительно. Ввести возраст человека и
определить, подходит ли он фирме (вывести ответ
«подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два
условия одновременно.

?

Можно ли решить известными методами?

29
30

Вариант 1. Алгоритм
начало
ввод x
да

x >= 25?
да

x <= 40?
'подходит'

нет

нет

'не подходит'

конец

'не подходит'
Вариант 1. Программа
x=input('Введите возраст')
x=int(x)
if x >= 25 :
if x <= 40 :
print ('Подходит')
else :
print ('Не подходит')
else :
print ('Не подходит')

31
32

Вариант 2. Алгоритм
начало
ввод x
да

x >= 25
и
x <= 40?

'подходит'

нет

'не подходит'

конец
33

Программа
x=input('Введите возраст')
x=int(x)
if (x >= 25) and (x <= 40) :
print ('Подходит')
else :
print ('Не подходит')

сложное
условие
34

Сложные условия
Сложное условие – это условие, состоящее из
нескольких простых условий (отношений), связанных
с помощью логических операций:

• not – НЕ (отрицание, инверсия)
• and – И (логическое умножение, конъюнкция,
одновременное выполнение условий)

• or – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)

• xor – исключающее ИЛИ (выполнение только
одного из двух условий, но не обоих)

Простые условия (отношения)

<

<=

>

>=

==

равно

не равно

!=
Сложные условия
Порядок выполнения (приоритет = старшинство)
• выражения в скобках
• not
• and
• or, xor
• <, <=, >, >=, ==, !=
Особенность – каждое из простых условий
обязательно заключать в скобки.
Пример

4
1
6
2
5
3
if not (a > b) or (c <> d) and (b <> a) :

35
36

Задания
«4»: Ввести номер месяца и вывести название
времени года.
Пример:

Введите номер месяца:
4
весна
«5»: Ввести возраст человека (от 1 до 150 лет) и
вывести его вместе с последующим словом
«год», «года» или «лет».
Пример:

Введите возраст:
24
Вам 24 года

Введите возраст:
57
Вам 57 лет
37

Программирование
на языке Python
Тема 4. Циклы

© C. Ефимов, 2013
Циклы
Цикл – это многократное выполнение одинаковой
последовательности действий.
• цикл с известным числом шагов
• цикл с неизвестным числом шагов (цикл с
условием)
Задача. Вывести на экран квадраты и кубы целых
чисел от 1 до 8 (от a до b).
Особенность: одинаковые действия выполняются 8
раз.

?

Можно ли решить известными методами?

38
39

Алгоритм
начало

задать начальное значение
переменной цикла

I=1

проверить, все ли сделали

i <= 8?
да
I2 = i * i
I3 = i2 * i

i, i2, i3
I =i+1

нет

конец
вычисляем квадрат и
куб
вывод результата
перейти к
следующему i
Алгоритм (с блоком «цикл»)
начало
i = 1,8

i2 = i * i
i3 = i2 * i

i, i2, i3

блок «цикл»
конец

тело цикла

40
41

Программа
for i in range(1, 9):
i2 = i*i
i3 = i2*i
print(i, i2, i3)

конечное значение

переменная
цикла
42

Цикл с переменной
Увеличение переменной на 1:
for <переменная> in <конечное значение> :
{тело цикла}

Чему равно значение переменной а?
a=1
for i in range(3): a= a+1

a= 4
Как изменить шаг?
Идея: Надо вывести всего 7 чисел, переменная i
изменяется от 1 до 15. Начальное значение a равно 1, с
каждым шагом цикла i увеличивается на 2.
Решение:

a = 1
for i in range(1, 15, 2) :
a = a+i
print(a)

43
Задания
«4»: Ввести a и b и вывести квадраты и кубы чисел
от a до b.
Пример:
Введите границы интервала:
4 6
4 16 64
5 25 125
6 36 216
«5»: Вывести квадраты и кубы 10 чисел следующей
последовательности: 2, 4, 6, 8, 10, …
Пример:
1
1
1
2
4
8
4
16
64

44
45

Программирование
на языке Python
Тема 5. Циклы с условием

© C. Ефимов, 2013
Цикл с неизвестным числом шагов
Пример: Отпилить полено от бревна. Сколько раз надо
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить
число цифр в нем.
Идея решения: Отсекаем последовательно последнюю
цифру, увеличиваем счетчик.
n

count

123

0

12

1

1

2

0

3

Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать
«пока n <> 0».

46
47

Алгоритм
начало

обнулить
счетчик цифр

ввод n
count = 0

выполнять
«пока n != 0»
n != 0?

нет

да
Count = count + 1
n = n // 10

count
конец
Программа
n=input('Введите целое число')
n = int(n)
выполнять
s=n
«пока n <> 0»
count = 0
while n != 0 :
count = count + 1
n= n // 10
print('В числе ', s, ' нашли ', count, '
цифр')

48
Цикл с условием
while <условие> :
{тело цикла}
Особенности:
• можно использовать сложные условия:
while (a<b) and (b<c) :
{тело цикла}

49
Цикл с условием
Особенности:
• условие пересчитывается каждый раз при входе в
цикл
• если условие на входе в цикл ложно, цикл не
выполняется ни разу
a = 4 b = 6
while a > b :
a = a – b
• если условие никогда не станет ложным,
программа зацикливается
a = 4 b = 6
while a < b :
d := a + b

50
Замена for на while и наоборот
for i in range(1, 10):
{тело цикла}

I = 1
while i <= 10 :
{тело цикла}
i := i + 1

Замена цикла for на while возможна всегда.
Замена while на for возможна только тогда, когда
можно заранее рассчитать число шагов цикла.

51
Задания
«4»: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна 10.
«5»: Ввести целое число и определить, верно ли,
что в его записи есть две одинаковые цифры.
Пример:
Введите целое число: Введите целое число:
1234
1224
Нет.
Да.

52
53

Программирование
на языке Python
Тема 6. Функции

© C. Ефимов, 2013
Функции
Функция – это вспомогательный алгоритм
(подпрограмма), результатом работы которого
является некоторое значение.
Примеры:

x ,
• вычисление sin x cos x
,
• расчет значений по сложным формулам
• ответ на вопрос (простое число или нет?)

Зачем?

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

54
55

Функции
Задача: составить функцию, которая вычисляет
наибольшее из двух значений, и привести пример
ее использования формальные параметры
формальные параметры

Функция:
def Max(a,b):
if a > b :
max = a
else :
max = b
return max
a=input()
b=input()
print(Max(a,b))

это результат
функции
56

Функции
Особенности:
• заголовок начинается словом def
def Max ():

• можно использовать параметры-переменные
def Max (a, b):

• в конце функции присутствует инструкция return. она
передает то или иное значение в основную ветку
программы
• функции располагаются ВЫШЕ основной программы
Функции
Особенности:
• Глобальные переменные объявляются вне функций и
могут быть прочитаны без каких либо объявлений. Но
если необходимо изменить значение глобальной
переменной из функции, то вам необходимо объявить ее
в начале функции ключевым словом «global»
def Myfyn () :
global number
number = 3
return number
number = 5
print (Myfyn())

57
58

Задания
«4»: Составить функцию, которая определяет сумму всех

чисел от 1 до N и привести пример ее использования.
Пример:
Введите число:
100
сумма = 5050

«5»: Составить функцию, которая определяет, сколько зерен

попросил положить на N-ую клетку изобретатель шахмат
(на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4
зерна, …)

Пример:
Введите номер клетки:

28
На 28-ой клетке 134217728 зерен.

Más contenido relacionado

La actualidad más candente

データ解析のための統計モデリング入門 6.5章 後半
データ解析のための統計モデリング入門 6.5章 後半データ解析のための統計モデリング入門 6.5章 後半
データ解析のための統計モデリング入門 6.5章 後半
Yurie Oka
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
智啓 出川
 
基礎からのベイズ統計学 3章(3.1~3.3)
基礎からのベイズ統計学 3章(3.1~3.3)基礎からのベイズ統計学 3章(3.1~3.3)
基礎からのベイズ統計学 3章(3.1~3.3)
TeranishiKeisuke
 
Розв'язування лінійних рівнянь з двома змінними
Розв'язування лінійних рівнянь з двома зміннимиРозв'язування лінійних рівнянь з двома змінними
Розв'язування лінійних рівнянь з двома змінними
Tetyana Andrikevych
 

La actualidad más candente (20)

データ解析のための統計モデリング入門 6.5章 後半
データ解析のための統計モデリング入門 6.5章 後半データ解析のための統計モデリング入門 6.5章 後半
データ解析のための統計モデリング入門 6.5章 後半
 
時系列データと確率的プログラミング tfp.sts
時系列データと確率的プログラミング tfp.sts時系列データと確率的プログラミング tfp.sts
時系列データと確率的プログラミング tfp.sts
 
確率論基礎
確率論基礎確率論基礎
確率論基礎
 
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
 
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
2015年度GPGPU実践プログラミング 第10回 行列計算(行列-行列積の高度な最適化)
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
基礎からのベイズ統計学 3章(3.1~3.3)
基礎からのベイズ統計学 3章(3.1~3.3)基礎からのベイズ統計学 3章(3.1~3.3)
基礎からのベイズ統計学 3章(3.1~3.3)
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
 
単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professional
 
DeepLearning 10章 回帰結合型ニューラルネットワークと再帰型ネットワーク
DeepLearning 10章 回帰結合型ニューラルネットワークと再帰型ネットワークDeepLearning 10章 回帰結合型ニューラルネットワークと再帰型ネットワーク
DeepLearning 10章 回帰結合型ニューラルネットワークと再帰型ネットワーク
 
Квадратична функція
Квадратична функція Квадратична функція
Квадратична функція
 
わかパタ 1章
わかパタ 1章わかパタ 1章
わかパタ 1章
 
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
 
テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)
テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)
テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)
 
クラシックな機械学習入門:付録:よく使う線形代数の公式
クラシックな機械学習入門:付録:よく使う線形代数の公式クラシックな機械学習入門:付録:よく使う線形代数の公式
クラシックな機械学習入門:付録:よく使う線形代数の公式
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Розв'язування лінійних рівнянь з двома змінними
Розв'язування лінійних рівнянь з двома зміннимиРозв'язування лінійних рівнянь з двома змінними
Розв'язування лінійних рівнянь з двома змінними
 
PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講
 
できる!遺伝的アルゴリズム
できる!遺伝的アルゴリズムできる!遺伝的アルゴリズム
できる!遺伝的アルゴリズム
 
[2021CAPE公開セミナー] 論理学上級 Ⅱ-1「ラッセルのパラドックスと3つの対策」
[2021CAPE公開セミナー] 論理学上級 Ⅱ-1「ラッセルのパラドックスと3つの対策」[2021CAPE公開セミナー] 論理学上級 Ⅱ-1「ラッセルのパラドックスと3つの対策」
[2021CAPE公開セミナー] 論理学上級 Ⅱ-1「ラッセルのパラドックスと3つの対策」
 

Similar a Python

паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
igorm9so
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
2berkas
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программирования
irina8682
 
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
HappyDev
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
AliyaAringazinova
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
 

Similar a Python (20)

паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
паскаль
паскальпаскаль
паскаль
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
введение
введениевведение
введение
 
презентация1
презентация1презентация1
презентация1
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
Cреда программирования
Cреда программированияCреда программирования
Cреда программирования
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
паскаль 10кл 14
паскаль 10кл 14паскаль 10кл 14
паскаль 10кл 14
 
8 3-5
8 3-58 3-5
8 3-5
 
пр 15.docx
пр 15.docxпр 15.docx
пр 15.docx
 
прак 15.docx
прак 15.docxпрак 15.docx
прак 15.docx
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
Программирование циклических алгоритмов
Программирование циклических алгоритмовПрограммирование циклических алгоритмов
Программирование циклических алгоритмов
 
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
07 HappyDev-lite-2015 spring. Евгений Тюменцев. Зачем программисту нужно зна...
 
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
2015-04-12 07 Евгений Тюменцев. Зачем программисту нужно знать математику?
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Циклы
ЦиклыЦиклы
Циклы
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 

Python

  • 1. Программирование на языке Python 1.Введение 2.Ветвления 3.Сложные условия 4.Циклы 5.Циклы с условием 6.Функции © C. Ефимов, 2013 1
  • 2. 2 Программирование на языке Python Тема 1. Введение © C. Ефимов, 2013
  • 3. Языки программирования • Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде процессора (Ассемблер) • Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера • для обучения: Бейсик, Паскаль, Python • профессиональные: С++, Python, Паскаль • для задач робототехники и искусственного интеллекта: Пролог, ЛИСП, С++, Python • для Интернета: HTML, CSS, JavaScript, Java, Python, PHP, ASP 3
  • 4. Язык Python 1991 – разработан Гвидо ван Россумом • объектно-ориентированный язык • успешно применяться в Google 4
  • 5. Программа Программа – это • алгоритм, записанный на каком-либо языке программирования • набор команд для компьютера Команда – это описание действий, которые должен выполнить компьютер. • откуда взять исходные данные? • что нужно с ними сделать? Переменная – изменяющаяся величина, имеющая имя (ячейка памяти). Функция – вспомогательный алгоритм для выполнения вычислений (вычисление квадратного корня, sin). 5
  • 6. Пример простейшей программы: print(‘Сложим два числа А и B’) A=2 B=3 C=A+B print(C) 6
  • 7. Все программы строятся по Алгоритму Алгоритм – это четко определенный план действий для исполнителя. Свойства алгоритма • дискретность: состоит из отдельных шагов (команд) • понятность: должен включать только команды, известные исполнителю (входящие в СКИ) • определенность: при одинаковых исходных данных всегда выдает один и тот же результат • конечность: заканчивается за конечное число шагов • массовость: может применяться многократно при различных исходных данных • корректность: дает верное решение при любых допустимых исходных данных 7
  • 8. Блок-схема линейного алгоритма начало блок «начало» ввод a, b блок «ввод» C = a + b блок «процесс» вывод c блок «вывод» конец блок «конец» 8
  • 9. Переменные Язык Python чувствителен к регистру. Переменная Z и z – разные переменные. Python, в отличие от многих языков, не требует описания переменных. Типы переменных: • int { целая } { вещественная } • float { список, аналог массивов} • list { символьная строка } • str • bool { логическая } Объявление переменных (выделение памяти): int(“88”) результат 88 str(88) результат “88” float(88) результат 88.00 9
  • 10. Имена программы, констант, переменных Имена могут включать • латинские буквы (A-Z) заглавные и строчные буквы не различаются • цифры имя не может начинаться с цифры • знак подчеркивания _ Имена НЕ могут включать • русские буквы • пробелы • скобки, знаки +, =, !, ? и др. Какие имена правильные?? AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B 10
  • 11. 11 Как изменить значение переменной? Оператор – это команда языка программирования высокого уровня. Оператор присваивания служит для изменения значения переменной. Пример: a=5 b=a+2 a=b*4 print(a) a 5 ? 5 b ? 7 5+2 a 28 5 7*4
  • 12. 12 Оператор присваивания <имя переменной> = <выражение>; Арифметическое выражение может включать • имена переменных • знаки арифметических операций: + * / // % ** умножение деление • вызовы функций • круглые скобки ( ) деление нацело остаток от деления Возведение в степень
  • 13. Какие операторы неправильные? имя переменной должно быть слева от знака = a := 10 = y = b = x = a = 5 x 7,8 2.5 2*(a + y) b + x целая и дробная часть отделяются точкой 13
  • 14. Порядок выполнения операций • вычисление выражений в скобках • умножение, деление, //, % слева направо • сложение и вычитание слева направо 2 3 5 4 1 7 8 6 9 Z = (5*a*c+3*(c-d))/a*(b-c)/ b a 2 + 5c 2 − d ( a + b) x= (c + d )(d − 2a ) 5ac + 3(c − d ) z= (b − c) ab 2 6 3 4 7 5 1 12 8 11 10 9 X =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a)) 14
  • 15. 15 Оператор ввода a=input( ) { ввод значения переменной a} a=input(“Введите число”) c = a + 2 print ( ‘c=“, c ) Протокол: компьютер Введите число 25 пользователь c=27
  • 16. Оператор вывода print ( a ) { вывод значения переменной a} print (' Hello!‘) { вывод текста} print ( ‘Otvet: ', c ) { вывод текста и значения переменной c} print ( a+b ) { вывод суммы чисел } 16
  • 17. Сложение двух чисел Задача. Ввести два целых числа и вывести на экран их сумму. Простейшее решение: a=input() b=input() c = a + b print ( c ) 17
  • 18. Форматирование вывода import math x=math.pi print ('Pi=',"%.50f" % (x)) 18 вызов библиотеки в дробной части Результат выполнения программы: Pi=3.141592653589793115997963468544185 16159057617187500
  • 19. Задания «4»: Ввести три числа, найти их сумму и произведение. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140 «5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140 (4+5+7)/3=5.33 19
  • 20. 20 Программирование на языке Python Тема 2. Ветвления © C. Ефимов, 2013
  • 21. Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются зависит от выполнения некоторых условий, называются разветвляющимися. разветвляющимися. 21
  • 22. 22 Вариант 1. Блок-схема начало блок «решение» ввод a,b да a > b? max = a полная форма ветвления нет max = b вывод max конец ? Если a = b?
  • 23. Вариант 1. Программа print(‘input 2 number‘) a=input() b=input() if a > b : max = a else : max = b print (‘Max number', max) 23
  • 24. Условный оператор if <условие> : {что делать, если условие верно} else : {что делать, если условие неверно} Особенности: • вторая часть (else …) может отсутствовать (неполная форма) 24
  • 25. 25 Вариант 2. Блок-схема начало ввод a,b max = a да b > a? max = b вывод max конец нет неполная форма ветвления
  • 26. Вариант 2. Программа print(‘input 2 number‘) a=input() b=input() неполная форма max = a условного if b > a : оператора max = b print (‘Max number', max) 26
  • 27. Задания «4»: Ввести три числа и найти наибольшее из них. Пример: Введите три числа: 4 15 9 Наибольшее число 15 «5»: Ввести пять чисел и найти наибольшее из них. Пример: Введите пять чисел: 4 15 9 56 4 Наибольшее число 56 27
  • 28. 28 Программирование на языке Python Тема 3. Сложные условия © C. Ефимов, 2013
  • 29. Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. ? Можно ли решить известными методами? 29
  • 30. 30 Вариант 1. Алгоритм начало ввод x да x >= 25? да x <= 40? 'подходит' нет нет 'не подходит' конец 'не подходит'
  • 31. Вариант 1. Программа x=input('Введите возраст') x=int(x) if x >= 25 : if x <= 40 : print ('Подходит') else : print ('Не подходит') else : print ('Не подходит') 31
  • 32. 32 Вариант 2. Алгоритм начало ввод x да x >= 25 и x <= 40? 'подходит' нет 'не подходит' конец
  • 33. 33 Программа x=input('Введите возраст') x=int(x) if (x >= 25) and (x <= 40) : print ('Подходит') else : print ('Не подходит') сложное условие
  • 34. 34 Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: • not – НЕ (отрицание, инверсия) • and – И (логическое умножение, конъюнкция, одновременное выполнение условий) • or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) • xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) Простые условия (отношения) < <= > >= == равно не равно !=
  • 35. Сложные условия Порядок выполнения (приоритет = старшинство) • выражения в скобках • not • and • or, xor • <, <=, >, >=, ==, != Особенность – каждое из простых условий обязательно заключать в скобки. Пример 4 1 6 2 5 3 if not (a > b) or (c <> d) and (b <> a) : 35
  • 36. 36 Задания «4»: Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна «5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет». Пример: Введите возраст: 24 Вам 24 года Введите возраст: 57 Вам 57 лет
  • 38. Циклы Цикл – это многократное выполнение одинаковой последовательности действий. • цикл с известным числом шагов • цикл с неизвестным числом шагов (цикл с условием) Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Особенность: одинаковые действия выполняются 8 раз. ? Можно ли решить известными методами? 38
  • 39. 39 Алгоритм начало задать начальное значение переменной цикла I=1 проверить, все ли сделали i <= 8? да I2 = i * i I3 = i2 * i i, i2, i3 I =i+1 нет конец вычисляем квадрат и куб вывод результата перейти к следующему i
  • 40. Алгоритм (с блоком «цикл») начало i = 1,8 i2 = i * i i3 = i2 * i i, i2, i3 блок «цикл» конец тело цикла 40
  • 41. 41 Программа for i in range(1, 9): i2 = i*i i3 = i2*i print(i, i2, i3) конечное значение переменная цикла
  • 42. 42 Цикл с переменной Увеличение переменной на 1: for <переменная> in <конечное значение> : {тело цикла} Чему равно значение переменной а? a=1 for i in range(3): a= a+1 a= 4
  • 43. Как изменить шаг? Идея: Надо вывести всего 7 чисел, переменная i изменяется от 1 до 15. Начальное значение a равно 1, с каждым шагом цикла i увеличивается на 2. Решение: a = 1 for i in range(1, 15, 2) : a = a+i print(a) 43
  • 44. Задания «4»: Ввести a и b и вывести квадраты и кубы чисел от a до b. Пример: Введите границы интервала: 4 6 4 16 64 5 25 125 6 36 216 «5»: Вывести квадраты и кубы 10 чисел следующей последовательности: 2, 4, 6, 8, 10, … Пример: 1 1 1 2 4 8 4 16 64 44
  • 45. 45 Программирование на языке Python Тема 5. Циклы с условием © C. Ефимов, 2013
  • 46. Цикл с неизвестным числом шагов Пример: Отпилить полено от бревна. Сколько раз надо сделать движения пилой? Задача: Ввести целое число (<2000000) и определить число цифр в нем. Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик. n count 123 0 12 1 1 2 0 3 Проблема: Неизвестно, сколько шагов надо сделать. Решение: Надо остановиться, когда n = 0, т.е. надо делать «пока n <> 0». 46
  • 47. 47 Алгоритм начало обнулить счетчик цифр ввод n count = 0 выполнять «пока n != 0» n != 0? нет да Count = count + 1 n = n // 10 count конец
  • 48. Программа n=input('Введите целое число') n = int(n) выполнять s=n «пока n <> 0» count = 0 while n != 0 : count = count + 1 n= n // 10 print('В числе ', s, ' нашли ', count, ' цифр') 48
  • 49. Цикл с условием while <условие> : {тело цикла} Особенности: • можно использовать сложные условия: while (a<b) and (b<c) : {тело цикла} 49
  • 50. Цикл с условием Особенности: • условие пересчитывается каждый раз при входе в цикл • если условие на входе в цикл ложно, цикл не выполняется ни разу a = 4 b = 6 while a > b : a = a – b • если условие никогда не станет ложным, программа зацикливается a = 4 b = 6 while a < b : d := a + b 50
  • 51. Замена for на while и наоборот for i in range(1, 10): {тело цикла} I = 1 while i <= 10 : {тело цикла} i := i + 1 Замена цикла for на while возможна всегда. Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла. 51
  • 52. Задания «4»: Ввести целое число и найти сумму его цифр. Пример: Введите целое число: 1234 Сумма цифр числа 1234 равна 10. «5»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры. Пример: Введите целое число: Введите целое число: 1234 1224 Нет. Да. 52
  • 53. 53 Программирование на языке Python Тема 6. Функции © C. Ефимов, 2013
  • 54. Функции Функция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. Примеры: x , • вычисление sin x cos x , • расчет значений по сложным формулам • ответ на вопрос (простое число или нет?) Зачем? • для выполнения одинаковых расчетов в различных местах программы • для создания общедоступных библиотек функций 54
  • 55. 55 Функции Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использования формальные параметры формальные параметры Функция: def Max(a,b): if a > b : max = a else : max = b return max a=input() b=input() print(Max(a,b)) это результат функции
  • 56. 56 Функции Особенности: • заголовок начинается словом def def Max (): • можно использовать параметры-переменные def Max (a, b): • в конце функции присутствует инструкция return. она передает то или иное значение в основную ветку программы • функции располагаются ВЫШЕ основной программы
  • 57. Функции Особенности: • Глобальные переменные объявляются вне функций и могут быть прочитаны без каких либо объявлений. Но если необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global» def Myfyn () : global number number = 3 return number number = 5 print (Myfyn()) 57
  • 58. 58 Задания «4»: Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. Пример: Введите число: 100 сумма = 5050 «5»: Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4 зерна, …) Пример: Введите номер клетки: 28 На 28-ой клетке 134217728 зерен.