python pycharm 02 - nadin.miem.edu.runadin.miem.edu.ru/!!!_lec_2018_pdf/python_pycharm_02.pdf ·...

Post on 08-Jul-2020

18 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Python_PyCharm_02

Трубочкина Н.К.

2018

ЧТО ТАКОЕ АЛГОРИТМ?

1) последовательность простых шагов

2) поток управляющего процесса, который указывает, когда выполняется каждый шаг

3) средство определения времени остановки

1 + 2 + 3 = алгоритм!

ЧИСЛЕННЫЙ ПРИМЕР

g g*g x/g (g+x/g)/2

3 9 16/3 4.17

4.17 17.36 3.837 4.0035

4.0035 16.0277 3.997 4.000002

Квадратный корень из числа x равен y, или y * y = x Алгоритм для вычисления квадратного корня из числа x (16):

1) Начните с предположения, g (корень)=3. 2) Если g * g достаточно близко к x, остановитесь и скажите, что g, это ответ. 3) В противном случае сделайте новое предположение, усредняя g и x / g (g=(g+x/g)/2) 4) Используя новое предположение, повторите процесс 2-3

СОЗДАНИЕ АЛГОРИТМОВ

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

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

• выражения и вычисления имеют значения на языке программирования

АСПЕКТЫ ЯЗЫКОВ

Примитивные конструкции

• Английский: – слова

• Язык программирования: – числа,

– строки,

– простые операторы

Синтаксис • Английский: запись

– «мальчик-кошка-собака» - синтаксически не действительна

– «кот обнимает мальчика» - синтаксически действителена (валидна)

• Язык программирования: запись – «привет» 5 - синтаксически не действительна – 3.2 * 5 синтаксически действителена (валидна)

Статическая семантика Синтаксически действующие строки имеют смысл: • Английский:

«Я голоден» - синтаксически действителен, но статическая семантическая ошибка

• Язык программирования: 3.2 * 5 - синтаксически действительная запись 3+ "hi" - статическая семантическая ошибка

ПРОГРАММЫ НА ПИТОНЕ • программа представляет собой последовательность

определений и команд • определения оценены • команды, выполняемые интерпретатором Python в

оболочке – команды (инструкции) инструктируют интерпретатор делать что-то – можно вводить непосредственно в оболочку, хранящуюся в

файле, который считывается в оболочку и выполняется

ОБЪЕКТЫ Программы манипулируют объектами данных • объекты имеют тип, определяющий виды действий,

которые могут делать с ними программы – Анна - человек, поэтому она может ходить, говорить и т. д. – Чубакка - это «непонятно-кто», который может разыграть,

«непонятно-что» и т. д.

• Объекты: – скалярные (нельзя подразделить) – нескалярные (имеют внутреннюю структуру, к которым

можно получить доступ)

ОБЪЕКТЫ СКАЛЯРНЫЕ • int - целые числа, например, 5 • float - действительные числа, например, 3,27 • bool - логические значения True и False • NoneType - имеет одно значение, None • можно использовать type(), чтобы увидеть тип

объекта:

КОНВЕРСИИ ТИПА (CAST)

Можно конвертировать объект одного типа в другой

• float (3) - преобразует целое число 3 в действительное с плавающей точкой 3.0

• int (3.9) преобразует действительное с плавающей точкой 3.9 в целое 3

ПЕЧАТЬ В КОНСОЛИ

Чтобы показать вывод кода пользователю, используйте команду print

In [11]: 3+2

Out[11]: 5

In [12]: print(3+2)

5

Внутри ячейки

На консоли

ВЫРАЖЕНИЯ

• Можно объединить объекты и операторы для формирования выражений

– выражение имеет значение, которое имеет тип

• синтаксис простого выражения <object> <operator> <object>

Операторы для ints и floats

ПРОСТЫЕ ОПЕРАЦИИ • Выражения в круглых скобках, выполняются

первыми • приоритет операторов без круглых скобок

– ** – * – /

• + и - выполняются слева направо, как показано в выражении

ПРИСВОЕНИЕ ПЕРЕМЕННЫМ ЗНАЧЕНИЙ

• знак равенства - это присвоение значения имени переменной pi = 3.14159

pi_approx = 22/7

– значения, хранятся в памяти компьютера

– присваивание связывает имя со значением

– получить значение, связанное с именем или переменной, можно путем вызова имени, набрав pi

АБСТРАКТНЫЕ ВЫРАЖЕНИЯ

Зачем давать имена значениям выражений?

• повторное использование имен вместо значений

• проще изменить код позже

pi = 3.14159

radius = 2.2

area = pi*(radius**2)

ПРОГРАММИРОВАНИЕ против MATH

В программировании вы не «решаете для x»,

pi = 3.14159

radius = 2.2

# area of circle

area = pi*(radius**2)

radius = radius+1

ИЗМЕНЕНИЕ ЗНАЧЕНИЙ • можно повторно использовать имена переменных в новых операторах

присваивания

• предыдущее значение может сохраняться в памяти, но теряет привязку

• значение для области не изменяется, пока вы не сообщите компьютеру, чтобы выполнить расчет снова

Проверим в PyCharm

ЧТОБЫ НАЧАТЬ РАБОТАТЬ В PYCHARM…

Практика

Откройте Pycharm (1) и создайте новый проект (2)

1

2

Задайте имя проекта (3) и проверьте наличие интерпритатора python.exe (4), нажмите кнопку «Создать» (5)

3

4

5

Интерфейс Pycharm

6.Выделите папку проекта 7. Создайте новый файл: File-New-Python File

6

7

Задайте имя файла (8) и ОК

8

9. Введите скрипт

print('Hello World!')

10. Выполните его (Run)

9

Чтобы увеличить размер шрифта: File-Settings-Editor-Font Задайте размер ОК

Чтобы изменить цвет фона: File-Settings-Editor-Color Scheme Выберите, например, Github ОК

Тогда ваш интерфейс станет светлым с крупным шрифтом в рабочем поле

СТРОКИ • Содержат: буквы, специальные символы, пробелы, цифры • Демонстрируются в кавычках или одинарных кавычках

hi = "hello there" • конкатенации строк

name = "ana" greet = hi + name greeting = hi + ""+ name

• выполните некоторые операции в строке, как определено в документации

Python

silly = hi + ""+ name * 3

Упражнение 1 «Строки»

Вывод: print

• Используется для вывода данных на консоль

• Ключевое слово print x = 1

print(x)

x_str= str(x)

print("my fav numis", x, ".", "x =", x)

print("my fav numis " + x_str+ ". " + "x = " + x_str)

Упражнение 2 «Вывод»

INPUT/OUTPUT: input("") • input("") позволяет распечатать все, что есть в кавычках • связывает строковое значение с переменной

text = input("Type anything... ") print(5*text)

• input("") дает вам строку, поэтому она может использоваться при работе с числами

num= int(input("Type a number... ")) print(5*num)

Упражнение 3. «Ввод»

ОПЕРАЦИИ СРАВНЕНИЯ ДЛЯ int,float, string

i и j – имена переменных Значение результата сравнения True или False (Boolean)

• i> j • i>= j • i< j • i<= j • i == j тест равенства, True, если i такой же, как j • i! = j тест неравенства, True, если i не то же самое, что j

Упражнение 6

«Остаток»

ЛОГИЧЕСКИЕ ОПЕРАТОРЫ

a и b являются именами переменных (с булевыми значениями)

• not a True если a False/False если a is True

• a and b True если оба True

• a or b True если хотя бы один True

Пример на сравнение

pset_time= 15

sleep_time= 8

print(sleep_time> pset_time)

derive = True

drink = False

both = drink and derive

print(both)

Пр

им

ер «

По

иск в

лаб

ир

ин

те»

КОНТРОЛЬ ПОТОКА - ВЕТВЛЕНИЕ if <condition 1>: <expression 1> <expression 2> ... if <condition 2>: <expression 3> <expression 4> ... else: <expression 5> <expression 6> ...

if <condition 3>: <expression 7> <expression 8> ... elif<condition 4>: <expression 9> <expression 10> ... else: <expression 11> <expression 12> ...

<condition>имеет значение True или False вычисляем выражения в блоке, если <condition> True

Сдвиг Вопрос в Python: как вы обозначаете блоки кода?

Упражнение 4 «Ввод / вывод с условным оператором»

Ко

мен

тари

и п

о-р

усски

y=0

while

while <condition>: <expression> <expression> ... <condition> определяется в Boolean если <condition> is True, выполните все шаги внутри блока кода вычислите <condition> снова повторяйте до тех пор пока <condition> не станет False

Пример (while)

n = 0

while n < 5:

print(n)

n = n+1

while и for # более сложный код с циклом while

n = 0 while n < 5: print(n) n = n+1

# то же самое с помощью for n = 0 for n in range(5): print(n)

for

for <variable> in range(<some_num>):

<expression>

<expression> ...

• на каждом шаге цикла, <variable> принимает значение

• на первом шаге, <variable> стартует с наименьшего значения

• на следующем шаге <variable> принимает «предыдущщее значение» + 1

• etc.

break • сразу же выходит из любого цикла, в котором он находится

• отображает оставшиеся выражения в кодовом блоке

• выискивает только самый внутренний цикл!

while <condition_1>:

while <condition_2>:

<expression_a>

break

<expression_b>

<expression_c>

break Пример

for i in range(5, 11, 2): mysum += i if mysum == 5: break mysum += 1 print(mysum)

Выведет из цикла со значением mysum 5

range(start,stop,step) По умолчнию стартовое значение start = 0 и step = 1 Цикл останавливается, когда stop -1

mysum = 0 for i in range(10): mysum += i print(mysum) mysum = 0 for i in range(7, 10): mysum += i print(mysum) mysum = 0 for i in range(5, 11, 2): mysum += i if mysum == 5: break mysum += 1 print(mysum)

for против while for

• нужно знать число итераций

• может закончиться рано через перерывание

• использует счетчик

• можно переписать цикл for с использованием цикла while

while

• неограниченное количество итераций

• рано может закончиться

• может использовать счетчик, но нужно его инициализировать перед циклом и увеличивать его внутри цикла

• нельзя переписать цикл while с

использованием цикла for

Пример #################### ## EXAMPLE: perfect squares #################### ans = 0 neg_flag = False x = int(input("введите целое число:")) if x < 0: neg_flag = True while ans**2 < x: ans = ans + 1 if ans**2 == x: print("Корень квадратный из ", x, "это", ans) else: print(x, "Это не квадрат целого числа") if neg_flag: print("Минуточку... может быть ", -x, "?")

Задание

• Разберите все примеры из лекции в PyCharm

• Попробуйте самостоятельно модифицировать коды примеров и отслеживайте результаты в PyCharm

top related