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

  • ЗАПОМНИ! 03_Part01.indd 100 18.04.2018 17:25:32 Глава 4 Введение в программирование алгоритмов на Python 101

  • Таблица 4.8. Операторы членства Python Оператор Описание Пример

  • Таблица 4.9. Операторы тождественности Python Оператор Описание Пример

  • ЗАПОМНИ! 03_Part01.indd 102 18.04.2018 17:25:32 Глава 4 Введение в программирование алгоритмов на Python 103 Создание и использование функций

  • Создание повторно используемых функций

  • ЗАПОМНИ! 03_Part01.indd 103 18.04.2018 17:25:33 Часть I Начала 104 ускорения разработки;»

  • Передача аргументов в функцию

  • Введение в программирование алгоритмов на Python 105

  • Передача аргументов с помощью ключевых слов

  • ЗАПОМНИ! ЗАПОМНИ! 03_Part01.indd 105 18.04.2018 17:25:33 Часть I Начала 106

  • DisplaySum(2,3) и нажмите клавишу . Вы увидите ожидае- мый результат: 2 + 3 = 5. Теперь введите DisplaySum(Value2=3,Value1=2)

  • Использование аргументов со значениями по умолчанию

  • SayHello() и нажмите клавишу , чтобы увидеть сообщение по умолчанию. Если вы введете, например, SayHello("Howdy!")

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

  • Введение в программирование алгоритмов на Python 107

  • DisplayMulti(3, Hello,1,True)

  • Использование условных и циклических инструкций

  • Введение в программирование алгоритмов на Python в этой глаВе Числовые и логические вычисления


    Скачать 1.22 Mb.
    НазваниеВведение в программирование алгоритмов на Python в этой глаВе Числовые и логические вычисления
    Дата04.12.2022
    Размер1.22 Mb.
    Формат файлаpdf
    Имя файлаalgoritmy-dlya-chaynikov-dialektika.pdf
    ТипГлава
    #828302
    страница2 из 3
    1   2   3
    ЗАПОМНИ!
    РАбОТА С IPython
    Большая часть книги основана на Jupyter Notebook (см. главу 3, “Использова- ние Python для работы с алгоритмами”), потому что он предоставляет методы для создания, управления и взаимодействия со сложными примерами. Однако иногда требуется простая интерактивная среда для быстрых тестов. Anaconda поставляется с двумя такими средами, IPython и Jupyter QT Console. Хотя обе среды предоставляют схожие функциональные возможности, IPython являет- ся более простой в использовании. Чтобы запустить IPython, просто щелкни- те на ее пиктограмме в папке Anaconda3 своей системы. Работая в Windows, можете выбрать команду
    StartAll ProgramsAnaconda3IPython (ПускВсе программыAnaconda3IPython в русскоязычной версии). Вы также можете запустить IPython в консольном окне или терминале, введя
    IPython и нажав клавишу .
    Поскольку компьютер в действительности не понимает строки, которые так полезны при написании приложений, иногда требуется преобразовать строку в число. Для выполнения такого преобразования можно использовать коман- ды int()
    и float()
    . Например, если в приглашении Python ввести
    myInt =
    int("123")
    и нажать клавишу , можно создать переменную типа int с именем myInt
    , содержащую значение
    123
    Можно преобразовывать и числа в строку, используя команду str()
    Например, если ввести
    myStr
    =
    str(1234.56)
    и нажать клавишу
    , будет создана строка, содержащая значение "1234.56"
    , и присвоена переменной myStr
    . Идея в том, что вы очень легко можете
    ЗАПОМНИ!
    03_Part01.indd 100 18.04.2018 17:25:32

    Глава 4
    Введение в программирование алгоритмов на Python
    101
    выполнять преобразования чисел в строки и обратно. В последую- щих главах будет показано, как эти преобразования делают множес­
    тво, казалось бы, невозможных задач вполне выполнимыми.
    Как и с числами, со строками (и многими другими объектами) можно ис- пользовать некоторые специальные операторы. Операторы членства (member operators) позволяют определить, когда в строке находится некоторое опреде- ленное содержимое. Эти операторы показаны в табл. 4.8.
    Таблица 4.8. Операторы членства Python
    Оператор Описание
    Пример
    in
    Определяет, имеется ли значение левого операнда в последовательности, находящейся в правом операнде "Hello" in "Hello Goodbye" равно
    True not in
    Определяет, отсутствует ли значение левого операнда в последовательности, находящейся в правом операнде "Hello" not in "Hello Goodbye" равно
    False
    Обсуждение в этом разделе также делает очевидной необходимость знания типа данных, содержащихся в переменных. Для выполнения этой задачи ис- пользуются операторы тождественности, показанные в табл. 4.9.
    Таблица 4.9. Операторы тождественности Python
    Оператор Описание
    Пример
    is
    Возвращает
    True, если тип значения или выражения правого операнда совпадает с типом левого операнда type(2) is int равно
    True is not
    Возвращает
    True, если тип значения или выражения правого операнда отличается от типа левого операнда type(2) is not int равно
    False
    Работа с датами
    Дата и время знакомы большинству людей и постоянно ими используются.
    В нашем обществе почти все основано на датах и времени, и, в первую очередь,
    03_Part01.indd 101 18.04.2018 17:25:32

    Часть I
    Начала
    102
    к ним привязано решение тех или иных задач. Мы строим планы, определяя конкретные дату и время, когда будем заниматься той или иной работой. Мы живем по часам, обедая, отдыхая или развлекаясь в точно определенные часы.
    Весь наш день вращается вокруг часов. При работе с алгоритмами дата или вре- мя, когда выполняется некоторый шаг последовательности, могут быть такими же важными, как и сам шаг и то, что происходит в результате его выполнения.
    Алгоритмы часто используют дату и время для организации данных, чтобы люди могли лучше понимать как данные, так и результат работы алгоритма.
    В силу сказанного нам следует взглянуть на то, как Python работает с да- той и временем (в частности, как он хранит соответствующие значения для последующего использования). Как и только что рассмотренные строки, ком- пьютеры не понимают дату и время, которые в действительности для них не существуют, — они могут работать только с числами. С датой и временем, по сути, работает не компьютер, а алгоритм.
    Чтобы работать с датами и временем, необходимо использовать спе- циальную команду — import datetime
    . Технически это действие называется импортом модуля. Пока что не волнуйтесь о том, как работает эта команда, — просто используйте ее всякий раз, когда хотите сделать что­то с датой или временем.
    В компьютеры встроены часы, но они предназначены для людей, которые пользуются ими с помощью компьютера. Конечно, некоторое программное обеспечение также зависит от часов, но все же основной акцент делается на по- требности человека, а не компьютера. Чтобы получить текущее время, можно просто ввести команду
    datetime.datetime.now()
    и нажать клавишу .
    Вы увидите полную информацию о текущих дате и времени, как на часах ком- пьютера, например datetime.datetime(2016,12,20,10,37,24,460099)
    Вероятно, вы обратили внимание на трудность восприятия показанного формата даты и времени. Пусть, например, вы хотите получить только теку- щую дату в удобном для восприятия формате. Для выполнения этой задачи вы обращаетесь только к той части выходных данных, которая относится к дате, и преобразуете ее в строку. Введите
    str(datetime.datetime.now().date())
    и нажмите клавишу . Теперь вы получите немного более понятный вы- вод, такой как '2017‑07‑06'
    Достаточно интересно, что в Python также есть команда time()
    , которую можно использовать для получения текущего времени. Вы можете получить отдельные значения каждого компонента даты и времени, используя значения day
    , month
    , year
    , hour
    , minute
    , second и microsecond
    . Последующие главы по- могут вам понять, как использовать различные функции даты и времени для упрощения работы с алгоритмами.
    ЗАПОМНИ!
    03_Part01.indd 102 18.04.2018 17:25:32

    Глава 4
    Введение в программирование алгоритмов на Python
    103
    Создание и использование функций
    Для каждого шага алгоритма обычно требуется одна строка кода Python — инструкция, которая указывает компьютеру, как на один шаг приблизиться к полному решению задачи. Вы объединяете эти строки кода для достижения желаемого результата. Иногда требуется повторить инструкцию с различны- ми данными, а в некоторых случаях код становится настолько длинным, что становится трудно следить за тем, что делает та или иная его часть. Функции служат инструментом организации кода, который позволяет поддерживать чи- стоту и опрятность ваших исходных текстов. Кроме того, функции облегчают повторное использование кода при необходимости работы с различными дан- ными. Этот раздел данной главы полностью посвящен функциям. Здесь вы, кроме того, начнете создавать свои первые серьезные приложения так же, как это делают профессиональные разработчики.
    Создание повторно используемых функций
    Вы идете к шкафу, достаете из него брюки и рубашку, снимаете этикетки и одеваетесь. В конце дня вы снимаете их и выбрасываете в мусорное ведро.
    Мда… Не слишком похоже на правду. Большинство людей снимает одежду, стирает и кладет обратно в шкаф для повторного использования. Функции тоже являются многоразовыми. Никому не понравится детально расписывать одни и те же действия — это быстро становится монотонным и скучным делом.
    При создании функции определяется пакет кода, который можно повторно ис- пользовать для выполнения одной той же задачи — любое количество раз. Все, что вам нужно сделать, — это сообщить компьютеру, какую именно функцию использовать. Компьютеру никогда не надоедает добросовестно выполнять все инструкции функции всякий раз, когда вы просите его это сделать.
    При работе с функциями код, который нуждается в услугах функции, называется вызывающим; он вызывает функцию для выполнения не- которых действий. Вызывающий код должен предоставить функции необходимую для ее работы информацию; функция, в свою очередь, также возвращает информацию вызывающему коду.
    В свое время компьютерные программы не включали концепцию повторно- го использования кода. В результате разработчикам приходилось снова и снова изобретать один и тот же код. Довольно быстро была придумана идея функ- ций; эта концепция прошла достаточно долгий путь, пока функции не стали такими гибкими, какими они являются сегодня. Вы можете сделать функцию выполняющей любые нужные вам действия. Повторное использование кода является необходимой частью приложений для
    ЗАПОМНИ!
    03_Part01.indd 103 18.04.2018 17:25:33

    Часть I
    Начала
    104
    ускорения разработки;
    »
    уменьшения количества ошибок при программировании;
    »
    увеличения надежности приложений;
    »
    использования группой результатов работы одного программиста;
    »
    облегчения понимания кода;
    »
    повышения эффективности приложения.
    »
    Фактически функции выполняют целый список действий в виде многократ- ного использования в приложениях. Выполняя примеры в данной книге, вы увидите, как повторное использование упрощает жизнь. Если бы не повтор- ное использование кода, вы по­прежнему программировали бы, вручную вводя нули и единицы в компьютер.
    Для создания функции не требуется много работы. Чтобы увидеть, как ра- ботают функции, откройте копию IPython и введите следующий код (нажимая клавишу в конце каждой строки):
    def SayHello(): print('Hello There!')
    Для завершения функции нажмите еще раз после последней строки.
    Функция начинается с ключевого слова def
    (“define” — “определение”). Далее указываются имя функции, скобки, которые могут содержать аргументы функ- ции (данные, передаваемые в функцию), и двоеточие. В следующей строке ре- дактор автоматически делает отступ. Python использует пробелы для определе- ния блоков кода (инструкций, которые в функции связаны одна с другой).
    Теперь вы можете использовать функцию. Просто введите
    SayHello()
    и нажмите клавишу . Скобки после имени функции обязательно должны быть в наличии, поскольку они говорят Python о том, что вы ожидаете вы- полнения функции, а не обращаетесь к ней как к объекту. В результате работы этой функции будет выведена строка
    Hello There!
    Вызовы функций
    Функции могут принимать аргументы и возвращать значения. Возможность обмена данными делает функции гораздо более полезными, чем они могли бы быть в противном случае. В следующих разделах описано, как вызывать функ- ции, чтобы обеспечить возможность обмена данными.
    Передача аргументов в функцию
    Функция может потребовать от вызывающего кода предоставить аргумен- ты. Обязательный аргумент — это переменная, которая должна содержать дан- ные, необходимые для работы функции. Откройте копию IPython и введите следующий код:
    03_Part01.indd 104 18.04.2018 17:25:33

    Глава 4
    Введение в программирование алгоритмов на Python
    105
    def DoSum(Value1, Value2): return Value1 + Value2
    Теперь у вас есть новая функция,
    DoSum()
    . Она требует, чтобы при ее ис- пользовании вы предоставляли ей два аргумента. Если вы введете
    DoSum()
    (без аргументов) и нажмете клавишу , то увидите сообщение об ошиб- ке наподобие следующего:
    TypeError
    Traceback (most recent call last)
    in ()
    ‑‑‑‑> 1 DoSum()
    TypeError: DoSum() missing 2 required positional arguments: 'Value1' and 'Value2'
    Попытка вызвать
    DoSum()
    только с одним аргументом приведет к другому со- общению об ошибке. Корректное использование
    DoSum()
    требует предоставле- ния ей двух аргументов. Чтобы увидеть, как это работает, введите
    DoSum(1,2)
    и нажмите клавишу . Вы увидите ожидаемый результат —
    3
    Обратите внимание, что функция
    DoSum()
    предоставляет выходное значение
    3
    при передаче ей в качестве входных данных
    1
    и
    2
    . Это выходное значение возвращает оператор return
    . Увидев в функции оператор return
    , вы знаете, что эта функция возвращает некоторое выходное значение.
    Передача аргументов с помощью ключевых слов
    По мере того как ваши функции становятся все более и более сложными, как и методы их использования, может потребоваться обеспечить несколько больший контроль над вызовом функции и передаче ей аргументов. До сих пор мы использовали позиционные аргументы. Это означает, что значения предо- ставлялись в том порядке, в котором они появляются в списке аргументов в определении функции. Однако Python имеет и другой метод передачи аргумен- тов — с помощью ключевых слов. В этом случае необходимо указать имя ар- гумента, за которым следуют знак равенства (
    =
    ) и значение аргумента. Чтобы увидеть, как это работает, откройте копию IPython и введите следующий код:
    def DisplaySum(Value1, Value2): print(str(Value1) + ' + ' + str(Value2) + ' = ' + str((Value1 + Value2)))
    Обратите внимание, что аргумент функции print()
    включает список элементов для вывода и что эти элементы разделены знаком “плюс”
    (
    +
    ). Кроме того, аргументы имеют различные типы, поэтому внача- ле необходимо преобразовать их с помощью функции str()
    . Python
    ЗАПОМНИ!
    ЗАПОМНИ!
    03_Part01.indd 105 18.04.2018 17:25:33

    Часть I
    Начала
    106
    позволяет легко комбинировать аргументы таким способом. Кроме того, данная функция вводит концепцию автоматического продол- жения строки. Функция print()
    фактически располагается в двух строках, и Python автоматически продолжает чтение кода функции, переходя из первой строки во вторую.
    Теперь самое время протестировать функцию
    DisplaySum()
    . Сначала про- верим, как она работает с использованием позиционных аргументов. Для этого введите
    DisplaySum(2,3)
    и нажмите клавишу . Вы увидите ожидае- мый результат:
    2 + 3 = 5
    . Теперь введите
    DisplaySum(Value2=3,Value1=2)
    и нажмите клавишу . Вы вновь получите вывод
    2 + 3 = 5
    , несмотря на то что аргументы в функцию теперь переданы в обратном порядке.
    Использование аргументов со значениями по умолчанию
    Вызываете ли вы функцию, используя ключевое слово или позиционные ар- гументы, в любом случае вы должны указать значения аргументов. Но иногда функция может использовать значения аргументов по умолчанию, если извест- но некоторое часто используемое значение. Значения по умолчанию делают функцию проще в использовании и снижают вероятность ошибки, когда раз- работчик не предоставляет для функции входные данные. Для создания значе- ния по умолчанию в определении функции достаточно после имени аргумента добавить знак равенства и значение по умолчанию. Чтобы увидеть, как это работает, откройте копию IPython и введите следующий код:
    def SayHello(Greeting = "No Value Supplied"): print(Greeting)
    Функция
    SayHello()
    обеспечивает значение приветствия по умолчанию, если вызывающий код не предоставляет соответствующий аргумент. Когда кто­то пытается вызвать
    SayHello()
    без аргументов, это не приводит к ошибке.
    Введите
    SayHello()
    и нажмите клавишу , чтобы увидеть сообщение по умолчанию. Если вы введете, например,
    SayHello("Howdy!")
    , то увидите вывод переданной в функцию строки.
    Создание функций с переменным числом аргументов
    В большинстве случаев вы точно знаете, какое количество аргументов долж- на получать ваша функция. Желательно использовать в программах именно та- кие функции, поскольку функции с фиксированным числом аргументов упро- щают поиск и устранение проблем позже. Однако иногда вы просто не можете заранее определить, сколько аргументов будет получать ваша функция. На- пример, при создании приложения Python, работающего в командной строке, пользователь может не предоставить ему ни одного аргумента, максимальное
    03_Part01.indd 106 18.04.2018 17:25:34

    Глава 4
    Введение в программирование алгоритмов на Python
    107
    количество аргументов (в предположении, что такое значение существует) или любое промежуточное количество аргументов.
    К счастью, Python предоставляет возможность передачи переменного ко- личества аргументов функции. Для этого вы просто создаете аргумент, перед именем которого имеется звездочка, например
    *VarArgs
    . Обычно при этом функции передается еще один аргумент, который содержит количество аргу- ментов, передаваемых функции в качестве входных данных. Чтобы увидеть, как это работает, откройте копию IPython и введите следующий код:
    def DisplayMulti(ArgCount = 0, *VarArgs): print('Вы передали ' + str(ArgCount) + ' аргумента.', VarArgs)
    Обратите внимание, что функция print()
    выводит строку, а затем спи- сок аргументов. Благодаря дизайну этой функции можно просто ввес ти
    DisplayMulti()
    и нажать клавишу — так вы увидите, что этой функ- ции можно передать нулевое количество аргументов. Чтобы просмотреть, как работает вызов с несколькими аргументами, введите
    DisplayMulti(3,
    'Hello',1,True)
    и нажмите клавишу . Полученный вывод
    ('Вы пере‑
    дали
    3
    аргумента.',
    ('Hello',
    1,
    True))
    показывает, что при этом в функцию можно передавать значения любого типа.
    Использование условных
    и циклических инструкций
    Алгоритмы часто содержат шаги, в которых принимаются те или иные реше- ния или которые выполняются более одного раза. Например, может потребовать- ся отбросить значение, которое не соответствует остальным входным данным, что требует принятия соответствующего решения, или для получения желае- мого результата может потребоваться обработать данные более одного раза, на- пример при фильтрации данных. Python удовлетворяет эти потребности путем предоставления описанных в следующих разделах специальных инструкций, которые позволяют принимать решения или выполнять шаги более одного раза.
    1   2   3


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