Главная страница
Навигация по странице:

  • Anaconda

  • ANACONDA_DIR

  • SublimeText

  • ZeroDivisionError

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


    Скачать 315.09 Kb.
    НазваниеВведение в программирование на Python Введение в язык Python
    Дата14.07.2022
    Размер315.09 Kb.
    Формат файлаdocx
    Имя файла1 Введение в программирование на Python.docx
    ТипДокументы
    #630661

    Введение в программирование на Python



    Введение в язык Python


    Язык Python – это высокоуровневый интерпретируемый язык программирования, нацеленный на повышение продуктивности разработки и читаемости кода. Синтаксис Pythonминималистичен, и в то же время язык обладает богатой стандартной библиотекой с широким набором функций.

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

    Установка интерпретатора Python и необходимых модулей


    Наиболее простой способ установить Python с необходимыми библиотеками – скачать дистрибутив Anaconda, который уже включает всё необходимое: Python, интерактивную оболочку IPython, набор библиотек для расчётов и моделирования и т.д.

    Скачать дистрибутив Anaconda для своей операционной системы можно на сайте http://continuum.io.

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

    Можно ставить Python и не из дистрибутива Anaconda. Тогда для установки некоторых библиотек необходимо будет предварительно установить Build Tools, так как некоторые библиотеки представлены в виде исходного кода, который должен быть скомпилирован на целевой платформе.

    Работа с интерпретатором Python


    Дистрибутив Anaconda включает в себя среду Spyder. Среда позволяет редактировать скрипты Python и выполнять их, выполнять команды в консоли Python и IPython, отображает справку по функциям и параметрам функций, обладает автодополнением кода, визуальными подсказками, ведёт журнал выполненных команд, которые затем могут быть сохранены в скрипт и т.д.

    При первом запуске Spyder может возникнуть ошибка:



    Рисунок 1 Сообщение об ошибке при запуске Spyder

    Проблема решается следующим образом. Пусть Anaconda установлена в каталог ANACONDA_DIR (по умолчанию это c:\Users\\AppData\Local\Continuum\Anaconda3\). Тогда необходимо скопировать каталог ANACONDA_DIR \Library\plugins\platforms в каталог ANACONDA_DIR. После этого Spyder должен запускаться без проблем.

    Вот как выглядит главное окно Spyder:



    Рисунок 2Главное окно Spyder

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



    Рисунок 3Менеджер переменных

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



    Рисунок 4 Файловый менеджер

    Следующая вкладка отображает справку по указанному модулю или функции. Для отображения справки необходимо поставить курсор на интересующую функцию и нажать сочетание клавишCtrl+I.



    Рисунок 5 Отображение справки по функциям и модулям

    Справку по заданному модулю или функции можно получить и из консоли Python (см. про консоль ниже), выполнив команду help с параметром, например

    help('numpy.random.shuffle')

    Справа внизу располагается консоль Python, журнал выполненных команд и консоль IPython. Здесь можно вводить свои команды и экспериментировать с возможностями языка.



    Рисунок 6 Стандартная консоль Python



    Рисунок 7Журнал выполненных команд

    Скрипты можно создавать не только в Spyder, но и в любом текстовом редакторе. Удобно для этого использовать редактор с подсветкой синтаксиса, например, SublimeText или Notepad++. Кроме того, существуют полноценные IDE (интегрированные среды разработки с редактором кода, автодополнением, отладчиком, рефакторингом и т.д.). Одной из лучших бесплатных IDE на сегодня является PyCharm от JetBrains.



    Рисунок 8 Окно редактора Sublime Text



    Рисунок 9Окно IDE PyCharm

    Запустить созданный скрипт (текстовый файл с расширением .py) можно через командную строку, выполнив в ней команду:

    >python script.py

    где script.py – запускаемый скрипт.

    Вот пример запуска скрипта Python:



    Рисунок 10Запуск скрипта Pythonчерез командную строку

    Справка по базовым возможностям языка Python

    Переменные и типы данных


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

    a = 10 # переменная

    b = [1, 2, 3] # массив

    c = {‘name’: ‘lemon’, ‘color’: ‘yellow’} # словарь

    Как уже было сказано выше, Python является динамически типизируемым языком, поэтому тип переменных может измениться. Узнать текущий тип переменной можно с помощью встроенной функции type:

    >>> a = 1

    >>>type(a)



    >>> a = [1, 2, 3]

    >>>type(a)



    >>> a = {'a': 1, 'b': 2, 'c': 3}

    >>>type(a)



    >>> a = True

    >>>type(a)



    >>>

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

    >>>player = {'rating': 180, 'scores': [35, 18, 41], 'active': True}

    >>>player['scores']

    [35, 18, 41]

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

    human = (182, 86)

    human[0] # 182 – рост

    human[1] # 86 - вес

    Кортежи могут выступать в качестве параметров функций, например, вот так создаётся единичная матрица размера 2×3 с помощью библиотеки NumPy:

    >>>importnumpyasnp

    >>> m = np.ones(shape=(2, 3), dtype=int)

    >>> m

    array([[1, 1, 1],

    [1, 1, 1]])

    Кортежи удобны, когда нужно вернуть несколько значений из функции, например

    def max_(arr):

    max_idx, max_val = 0, 0
    fori in range(len(arr)):

    ifarr[i] >max_val:

    max_val = arr[i]

    max_idx = i

    returnmax_val, max_idx
    res = max_([2, 5, 4, 1])

    print(res[0], res[1])

    Этот код выведет следующие значения:

    5 1

    Это максимальное значение в массиве и его индекс.

    Приведённый выше код интересен по нескольким причинам. Во-первых, он показывает, что можно инициализировать несколько переменных сразу (хотя такой подход не рекомендуется, так как он запутывает код):

    max_idx, max_val = 0, 0

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

    Операции


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

    Операция деления (/) в Python не целочисленная:

    >>> 5 / 2

    2.5

    Чтобы выполнить именно целочисленное деление, необходимо использовать два прямых слэша:

    >>> 5 // 2

    2

    Возведение в степень выполняется с помощью оператора **, например

    >>> 5**2

    25

    Операция сложения (+) для чисел даст число, для строк и массивов – выполнит их конкатенацию:

    >>> 3 + 4

    7

    >>> '3' + '4'

    '34'

    >>> [1, 2, 3] + [4, 5]

    [1, 2, 3, 4, 5]

    Управление выполнением программы в Python

    Условия


    Условия в Python записываются с помощью if-else. После ключевого слова if следует условие, затем двоеточие. Код внутри блока if пишется со следующей строки с отступом. Например

    height = int(input('Введитерост: '))

    ifheight> 180:

    print('Высокий')

    Можно использовать if в сочетании else. else в данном случае пишется с тем же отступом, что и if, после else следует двоеточие. Например

    height = int(input('Введитерост: '))

    if height > 180:

    print('Высокий')

    else:

    print('Низкий')

    Можно использовать сочетание условий благодаря конструкции if-elif-else. Например

    height = int(input('Введитерост: '))

    size = 'S'
    if height < 160:

    size = 'S'

    elif height < 170:

    size = 'M'

    elif height < 180:

    size = 'L'

    else:

    size = 'XL'

    print(size)

    Можно записывать сложные условия, используя ключевые слова not, and, or, проверки на равенство == и неравенство !=.

    if 165 < height < 175:

    print('Среднийрост')
    sun = True

    rain = False

    if sun and not rain:

    print('Можно выйти на прогулку')
    if 2 * 2 == 4 and 2 * 2 != 5:

    print('Прописные истины')

    Циклы


    В Python есть 2 типа циклов: while и for. Цикл while выполняет выражение до тех пор, пока условие не станет истинным:

    whileinput('q для выхода: ') != 'q':

    print('Выполнение программы')

    Цикл for является аналогом цикла for в C++. Он позволяет выполнять заданное количество итераций, проходить по элементам коллекции. Например, вот так можно обработать все элементы массива:

    for item in [1, 2, 3]:

    print(item)

    Вместо массива могут быть и другие коллекции и даже строки:

    for letter in 'String':

    print(letter)

    Часто при решении практических задач требуется указать начальное, конечное значение счётчика и шаг изменения. Для этого необходимо воспользоваться функцией range. Если в функцию передан один параметр, то это будет конечное значение счётчика, начинающегося с 0 с шагом 1. Если 2 параметра, то это будут начальное и конечное значения счётчика. Если в функцию передан третий параметр, то он будет отвечать за шаг изменения счётчика. Вот как может выглядеть код для вывода нечётных цифр от 1 до 10:

    fori in range(1, 10, 2):

    print(i)

    У цикла for есть ещё альтернативная однострочная форма записи. Вот как можно переписать код из примера выше в одну строку:

    [print(i) for i in range(1, 10, 2)]

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

    >>>powers_of_two = [2**i for i in range(9)]

    >>>powers_of_two

    [1, 2, 4, 8, 16, 32, 64, 128, 256]

    В Python есть ключевые слова break и continue, смысл которых такой же, как в C++. break прерывает цикл, continue позволяет пропустить текущую итерацию и перейти к следующей.

    >>>for letter in 'привет':

    ... if letter == 'р':

    ... continue

    ... print(letter, end='')

    ...

    пивет

    Но в отличие от C++, в Python есть особенность. После цикла for можно указать блок else, который выполнится в том случае, если в цикле была выполнена инструкция continue или break:

    for letter in 'привет':

    if letter == 'e':

    break

    else:

    print('Встретилась буква е')

    Обработка исключений


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

    В простейшем случае перехват исключений может быть реализован с использованием инструкций try-except:

    try:

    a = int(input('Первый множитель: '))

    b = int(input('Второй множитель: '))

    print('Результат: %d' %(a * b))

    except Exception:

    print('Некорректные аргументы')

    Перехватывать можно разные исключения. В идеале, должен быть свой обработчик под каждый возможный тип исключений. Вот некоторые возможные исключения: ZeroDivisionError (деление на ноль), OverflowError (результат арифметической операции слишком велик для представления числа), ImportError (не удалось импортировать модуль) и т.д.

    Кроме ключевых слов try и except при обработке исключений могут использоваться инструкции finally и else. finally выполняет блок инструкций в любом случае, было ли исключение или нет (например, когда необходимо закрыть файл). Инструкция else выполняется в том случае, если исключения не было.

    Создание собственных функций


    Объявление собственных функций в Python начинается с ключевого слова def, за которым через пробел идёт имя функции, а в скобках список её параметров. После закрывающей скобки ставится двоеточие. Тело функции пишется с отступом в 2 или 4 пробела (в зависимости от принятого соглашения). Если функция должна вернуть значение, его записывают после ключевого слова return. Функция может возвращать несколько параметров (см. пример выше – функция max_). Вот пример функции, определяющей минимальное и максимальное среди переданных двух чисел:

    defminmax(a, b):

    return (a, b) if a < b else (b, a)

    Функции могут параметры по умолчанию. Например, если приведённую ниже функцию вызвать без параметра, она вернёт факториал 5:

    >>>def factorial(n=5):

    ... return n * factorial(n - 1) if n > 1 else 1

    ...

    >>>factorial()

    120

    >>>factorial(3)

    6

    Импорт функций из других файлов


    Часто удобно бывает поместить часто используемые функции в отдельный файл, а затем подключать их в свой скрипт и использовать в работе. Ещё более распространённый случай – использование некоторых функций из сторонней библиотеки.

    Самый простой способ подключения внешнего файла – директива import. Например

    import math

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

    >>>math.sqrt(4)

    2.0

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

    frommathimport *

    Тогда можно будет вызывать функции напрямую без указания имени модуля:

    >>>sqrt(4)

    2.0

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

    >>>frommathimportsqrt, sin

    >>>sin(0)

    0.0

    >>>cos(0)

    NameError: name 'cos' is not defined

    >>>Traceback (most recent call last):

    File "", line 1, in

    Но на практике такой подход не рекомендуется из-за того, что в разных модулях могут присутствовать функции с одинаковыми именами:

    >>>from math import *

    >>>fromnumpy import *

    >>>sqrt(4) # какая реализация используется? math или numpy?

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

    >>> import numpy as np

    >>> import matplotlib.pyplot as plt

    >>>np.sqrt(4)

    2.0

    Комментарии


    Однострочные комментарии в Python начинаются с символа #. Например

    # это пример однострочного комментария

    Многострочные комментарии заключаются в тройные кавычки (одинарные или двойные). Например

    deffactorial(n):

    '''

    Рекурсивная функция вычисления факториала числа n

    '''

    return 1 if n == 1 else n * factorial(n - 1)

    Этот пример показывает ряд интересных особенностей Python. Во-первых, многострочный комментарий внутри функции. Во-вторых, пример рекурсивной функции (функция factorial вызывает сама себя). В-третьих, интересная однострочная запись условия if-else, напоминающая тернарную операцию в C++.

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

    >>>factorial.__doc__

    '\n Рекурсивная функция вычисления факториала числа n\n '


    написать администратору сайта