python pycharm 02 - nadin.miem.edu.runadin.miem.edu.ru/!!!_lec_2018_pdf/python_pycharm_02.pdf ·...
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