350 likes | 1.04k Views
Язык программирования PYTHON для преподавания алгоритмизации и программирования в школьном курсе информатики. Елена Владимировна Андреева, зав. каф. информатики, СУНЦ МГУ helena@1september.ru. Почему PYTHON.
E N D
Язык программирования PYTHONдля преподавания алгоритмизации и программирования в школьном курсе информатики Елена Владимировна Андреева, зав. каф. информатики, СУНЦ МГУhelena@1september.ru
Почему PYTHON • Python– высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода • Python поддерживает несколько парадигм программирования, в том числе структурное, императивное, объектно-ориентированное, функциональное • Python и подавляющее большинство библиотек к нему бесплатны и поставляются в исходных кодах. Более того, в отличие от многих открытых систем, лицензия никак не ограничивает использование Python в коммерческих разработках
Философия PYTHON(import this) • Красивое лучше, чем уродливое. • Явное лучше, чем неявное. • Простое лучше, чем сложное. • Сложное лучше, чем запутанное. • Плоское лучше, чем вложенное. • Разреженное лучше, чем плотное. • Читаемость имеет значение. • Особые случаи не настолько особые, чтобы нарушать правила. • Должен существовать один — и, желательно, только один — очевидный способ сделать это. • Если реализацию сложно объяснить — идея плоха.
История PYTHON • Первый релиз — 1991 год • Из С, C++ — некоторые синтаксические конструкции (создатель языка Гвидо ван Россум использовал наиболее непротиворечивые конструкции из С, чтобы не вызвать неприязнь у С-программистов) • Smalltalk — объектно-ориентированное программирование • Lisp — отдельные черты функционального программирования(lambda, map, reduce и другие); • Скриптовые языки, в том числе для web-приложений • Fortran — срезы массивов, комплексная арифметика • 2008 год — вышла версия 3.0, устраняющая многие недостатки, но не полностью совместимя с 2.х
PYTHON в индустрии • Google • Apple • IBM • CERN • DreamWorks • NASA • Nokia • Яндекс
PYTHON в образовании • Наибольшее распространение получил PYTHON в США • Это первый язык программирования в MIT – флагмане обучения computer scienсe в мире • PYTHON рекомендован как язык программирования для школ и первый язык программирования в университетах США • PYTHON в школах Москвы
Недостатки PYTHON • PYTHON, как и другие интерпретируемые языки, имеет сравнительно невысокую скорость выполнения программ. Однако, в случае с Python этот недостаток компенсируется уменьшением времени разработки программы. В среднем, программа на Python в 2-4 раза компактнее, чем её аналог на C++ или Java • Динамическая типизация вызывает вопросы у методистов по обучению программированию • Учебники, ЕГЭ и олимпиады
Первая программа • На PYTHONprint("Hello, World!") • На С++#include <iostream.h> void main() { cout << "Hello, World!" << endl; }
Оператор присваивания • A = 3.14print(type(A)) #floatA = ′Hello′ print(type(A)) #str • a = b = c = 0a += 1 # a = a + 1 • с = 5//2 #int • d = 5/2 #floatb = c**2 # b = c2 • a, b = b, a
Условный оператор • if 0 < x < 2: if 0 < y < 2:else:оператор • if x < 0:блок1elif x == 0:блок2else:блок3
Цикл с предусловием while x != y: ……………… continue ……………… break ……………… else: ……………… ……………… ……………… ………………
Цикл for for i in range(n):# i = 0, 1, …, n-1 ……………… continue ……………… break ……………… ……………… ………………
Цикл for for i in range(1,n+1,2):# i = 1, 3, …, n ……………… ……………… ……………… ……………… ………………
Цикл for for item in mylist:#item = mylist[0], mylist[1], … item = 0 # mylistне меняется! for iin range(n): mylist[i] = 0 # mylistменяется
Списки (аналог массивов) • s = [0]*100 # создан список из 100 нулей • s = list(map(int, input().split())) • if 2 in s: del s[s.index(2)] • print(s.count(2), min(s), max(s)) • Наконец • s.sort() # сортирует список s • p = sorted(s) • # создает новый отсортированный список • s.reverse()
Сортировка подсчетом массива цифр a=list(map(int,input().split())) d = [0]*10 for it in a: d[it] += 1 a = [] for i in range(10): a += [i]*d[i]
Символы и коды Символ ord(c) Код chr(k)
Строки: создание s1 = 'string' s2 = "That's a string \n too!" s3 = str(25)# '25' s4 = s1+s2 s5 = "" # пустая строка s6 = ":)" * 100 # 100 смайликов length = len(s6) s7 = '''длинная cтрока'''
Срезы (slices) • s[a:b] = s[a] + s[a+1] + s[a+2] + … + s[b-1] (начинаем с позиции a, заканчиваем до позиции b) s[3:7] = s[3] + s[4] + s[5] + s[6] • s[a:b:c] = s[a] + s[a+c] + s[a+2c] + s[a+3c] + … (начинается с а, идем с шагом с, не доходя до позицииb) s[3:7:2] = s[3] + s[5] • s[a:b] + s[b:c] эквивалентно s[a:c]
Функции • Описание функции defaverage(a, b, c): d = a + b + c return d/3 def average1(s): return sum(s)/len(s)
Множество (set) • S = set() • S = {5, 'abc', 100} • S = set("apple") • #{'a', 'p', 'l', 'e'} • | & - ^ • S.add(x) • 5 in S • 5 not in S
Словарь (dict) • D = {} или D = dict() • D = {'spam': 2, 'eggs': 3} • D = dict(zip(keyslist, valslist)) • D['eggs'] • 'eggs' in D • D.keys()#ключи • D.values()#значения • D.items() #пара (кортеж) ключ-значение • len(D)#количество сохраненных элементов • D[key] = 42 • #добавление или изменение элемента
Применение словарей в С4 N = int(input()) D = dict() for i in range(N): S, n = input().split() n = int(n) if D.get(S)== None: D[S] = n else: D[S] += n b = list(D.items()) b.sort(key = lambda item: item[1], reverse = True) print(b[0][0],b[1][0],b[2][0])
Питонизация ЛКШ • python мне очень понравился, он быстро учится, и писать на нем довольно легко, отчасти потому, что в нем используются отступы. Также понравилось то, что встроено много различных функций. В дальнейшем планирую писать на С++ и python. • Питон оказался очень простым и удобным, коды написанные на питоне гораздо короче и красивее нежели на том же самом паскале. Да и вообще к хорошему быстро привыкаешь. Теперь не охота писать вообще ни на чем, кроме питона. • Я буду писать на питоне, потому что он очень прост. Если я придумал решение задачи, мне не нужно думать как его реализовать, в питоне мне нужно просто его написать. Зачастую, при разработке программ на паскале, приходится думать как написать простые по задачам процедуры.
Полезные ссылки informatics.mccme.ru
Список литературы • Информатика 2/2012 • Н.Прохоренок “PYTHON 3 и PyQt” • Остальную литературу можно найти на http://ru.wikipedia.org/wiki/Python
Дальнейшие планы • Создание учебника на основе нового образовательного стандарта по информатике для основной школы • Поддержка на олимпиадах • Компьютерное ЕГЭ • ? Курсы повышения квалификации • ? Изжить Бейсик