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

  • Построение частей программ

  • 1.11. Словарь

  • Строковые операции

  • Ввод входных данных

  • Логические выражения

  • Северенс Ч. - Введение в программирование на Python - 2016. Введение в программирование на Python Ч. Северенс М. Национальный Открытый Университет "интуит", 2016


    Скачать 0.65 Mb.
    НазваниеВведение в программирование на Python Ч. Северенс М. Национальный Открытый Университет "интуит", 2016
    Дата20.03.2022
    Размер0.65 Mb.
    Формат файлаdocx
    Имя файлаСеверенс Ч. - Введение в программирование на Python - 2016.docx
    ТипДокументы
    #406251
    страница2 из 12
    1   2   3   4   5   6   7   8   9   ...   12
    Терминология: интерпретатор и компилятор


    Python высокоуровневый (blgh-level) язык программирования, созданный, чтобы быть относительно простым для чтения и написания программ человеком, и для компьютерного чтения и выполнения. Другие высокоуровневые языки: Java, С++, РНР, Ruby, Basic, Per JavaScript и множество других.
    Имеющиеся аппарат ные средства внугри CPU не понимают любой из вышеперечисленных языков. CPU понимает язык, который называется мапшнным (machh1e-laпguage). Мапшнный язык является простым, но очень угомительным в написании, т.к. представляет собой только нули и единицы:
    01010001110100100101010000001111

    111001000001110110001010101101

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

    трансляторы (переводчики:), позволяющие программистам писать на языках высокого уровня, таких как Python или JavaScrjpt. Затем трансляторы преобразуют программы в машинный язык для исполнения их процессором.
    Поскольку машинный язык привязан к аппаратному обеспечению компьютера, он не может быть перенесен (portahle) на компьютер с другим типом оборудования. Программы, написанные на языках высокого уровня, можно перемещать между разными компьютерами, например, с использованием транслятора на новом компьютере, или с помощью перекомпиляции кода для создания новой версии машинного языка программы.
    Трансляторы языков програм мирования делятся на две основные категории: (1) интерпретаторы и (2) компиляторы.

    Интерпретатор (шterpreter) читает исходный код программы, написанный программистом, анализирует код, и выполняет инструкции на лету (on-the-fl.y).

    Python является интерпретатором, мы можем написать строку на Pythoп,

    и он немедленно ее обработает и выдаст результат.
    Некоторые строки говорят Python о том, что вы хотите их запомнить в некото рой переменной (variahle). Нам необходимо выбрать имя для переменной, позже мы можем воспользоваться этим именем, чтобы получить значение, которое сохранили ранее.
    >>> х = 6

    >>> priпt х

    6

    >>> у = х * 7

    >>> prh1t у

    42

    >>>
    В этом примере, мы просим Python запомнить значение 6 и используем метку х, по которой сможем восстановить значение позже. Мы убедились, что Pythoп фактически: вспоминает значение, используя prшt. Затем мы просим Python взять х, умножить его на 7 и полученный

    результат сохранить в переменной у. После этого мы просим Pythoп вывести на экран значение, хранящееся в переменной у.
    Хотя мы вводим команды в Pythoп на разных строках, они рассматриваются в качестве упорядоченной последовательности инст рукций, мы можем обратиться к данным, созданным ранее.
    Сущность интерпретатора заключается в возможности интерактивного общения, как было показано выше. Компилятор нуждается в передаче всей программы в файл, после этого запускается процесс трансляции с языка высокого уровня в машинный язык и только после этого компилятор помещает результат машинного языка в файл, который позже будет исполняться.
    Если у вас ОС Wiпdows, то часто программа, содержащая исполняемые машинные инструкции имеет расширение ".ехе" или ".dll", "исполняемый файл" (executaЬle) или "дин амически загружаемая библиотека " (dyпamically loadaЫe liЬrary'') соответс т венно. В Liпux и Maciпtosh нет расширения, который бы однозначно отмечал файл как исполняемый.
    Если вы откроете исполняемый файл с текстовом редакторе, выглядит все совершенно ненормально и не читаемо:

    л?ELF ЛА ЛА ЛА Л@Л@Л@Л@Л@Л@Л@Л@Л@ ЛВ Л@ЛС Л@ЛА Л@Л@Л@ \) Л0 ЛН 4Л@Л@Л@ \х9QЛ) Л@Л@Л@Л@Л@Л@4Л@ Л@ЛGЛ@(Л@$Л@! Л@/1

    Л@Л@4Л@Л@Л@4\х80ЛолН 4\х80 ЛолН \х еОЛ@Л@Л@\хеОЛ@Л@Л@ЛЕ

    Л@Л@Л@ЛОЛ@Л@Л@ЛС Л@Л@Л@ ЛТ ЛА Л@Л@ ЛТ\х 81 ЛОЛН ЛТ\х 81 ЛО ЛI­

    Л@Л@Л@ЛSЛ@Л@Л@ЛОЛ@Л@ Л@ЛА Л@Л@Л@ ЛА \ЛОЛН Q Vh Т\х 8ЗЛОЛ

    Не просто читать и писать на машинном языке, поэтому хорошо, что у нас есть интерпретаторы и компилято ры, которые позволяют нам писать на языке высокого уровня, таком как Pythoп.
    На данный момент в нашем обсуждении компиляторов и инте рпретаторов, вам должно быть стало интересно узнать об интерп ретаторе Pythoп. На каком языке он написан? Написан ли он на компилируемом языке? Когда мы запускаем Python, что на самом деле происходит?

    Интерпретатор Python написан на языке программирования Си. Вы можете посмотреть исходные коды Python на сайте ссылка: www.pyt1l 0n.org. В ОС Wiпdows исполняемый машинный код для Pythoп, скорее всего, будет находиться в файле с именем:
    C:\Python27\pythoп.exe


      1. Написание программ


    Ввод команд в интерпретатор Python - отличная возможность для экспериментов с особенностями языка Python, но это не рекомендуется делать при решении более сложных задач.
    Когда мы хотим написать программу, мы используем текстов ый редактор для написания инструкций в файл, который называется скриптом (script). По договоренности, скрипты на Pythoп имею т расширение .ру.


      1. Что такое программа?


    Наи более общее определение программы последовательность инструкций на языке PytЬon, которая создана, чтобы что-то делать. Наш простой скрипт hello.py - это программа. Программа может содержать инструкцию, состоящую из одной строки.
    Предположим, что вы проводите исследование сообщений в социальной сети Facebook, вам интересны наиболее часто встречающиеся слова в последовательности сообщений. Вы можете вывести на экран поток сообщений и корпеть над поиском наиболее распространенных слов, но это займет много времени и может привести к ошибке. Вы могли бы быть достаточно умны, чтобы написать программу на Python, быстро решающую задачу, и освободить себе выходные для более интересны х занятий.
    Для примера посмотрим на следующий текст о клоунах и автомобилях. Посмотрите на текст и выделите наиболее часто встречающиеся слова и количество раз, сколько они встречаются.

    the clown ran after the car and the car ran into the teпt апd the teпt fell down 011 the clowп and the car
    Представи м, что вы выполняете это задание, просматривая миллионы строк текста. Честно говоря, это проще сделать с помощью программы на языке Python, которая подсчиты вает количество слов в тексте.
    Я написал программу, которая ищет наиболее часто повторяющиеся слова в тексте. Теперь вы можете воспользоваться этой программой, сэкономив себе немного времени:

    name = raw_input('Enter file:') handle = ореп(паmе, 'r')

    text = handle.read() words = text.split() coш1ts = dict()
    for word in words:

    cotmts[word] = counts.get(word,O) + 1
    bigcount = Nопе bigword = None

    for word,coш1t iп counts.items():

    if Ьigcount is Nопе or сош1t > Ьigcount: bigword = word

    bigcotmt = cotmt
    priпt bigword, bigcount
    Исходный текст программы http://pycode.ru/files/ pythoп/words.zip

    доступен в архиве: ссылка:
    Вам даже не надо знать Python, чтобы воспользоваться этой программой. Всю необходимую информацию по внутренней работе программы вы получите в главе 10 данн ого пособия.
    Это хоропш:й пример того, как интерпретатор Pythoп и язык программирования Python выступают посредниками между вам (конечными пользователями) и мной (разработчиком). Pythoп является способом обмена полезными инструкциями (например, программами)

    на общем языке, который доступен всем, кто установил Python на свои компьютеры . Таким образом, мы общаемся не с Python, а между собой посредствам Pytlюn.


      1. Построение частей программ


    В следующих нескольких главах, мы узнаем чуть больше о словаре, структуре фраз и отступов. Мы узнаем о мощных возможностях Руtlюп и как совместить эти возможности, чтобы создавать полезные программы.
    Есть несколько важных шаблонов, которые используются при построении программы. Эти конструкции относятся не только к Pythoп, они являются частью любого языка программирования, начиная от машинного языка и заканчивая языками высокого уровня.


    • Входные да нные (iпput): получение данных из внешнего мира. Это может быть чтение данных из файла или из других источников, например, микрофона или GPS. В наших первых программах, входные данные будут задаваться пользователем с клавиатуры.

    • Выходные данные (оutрut):отображение результатов работы программы на экране, сохранение их в файл или, возможно, воспроизведение в виде музыки или голоса.

    • Последовательное исполнение (sequeпtial ехесutiоn):инструкции выполняются в том порядке, в котором они встречаются в скрипте.

    • Условное выполнение (coпditional ехесutiоп):проверка определенных условий и выполнение /пропуск последовательности инструкций.




    • Повторное выполнение (repeated ехесutiоп):выполнять некоторый набор команд несколько раз, обычно с некоторыми изменениями .




    этот набор во всей программе.
    1.11. Словарь
    Olllliбкa (bug): olllliбкa в программе.
    Центральный процессор (ceпtral processing шrit): сердце компьютера, он исполняет программы, которые мы пишем.
    Компиляция (compile): преобразование программы, написанной на языке высокого уровня, в низкоуровневый язык и ее подготовка для последующего выполнения.
    Язык высокого уровня (high-level laпguage): язык программирования, подобный Python, который разрабатывался, чтобы быть понятым для чтения и написания человеком.
    Интерактивный режим (interactive mode): способ использования интерпретатора Python в режиме ввода команд и выражений.
    Интерпретация (interpret): построчное исполнение программы на языке высокого уровня.
    Язык программирования низкого уровня (low-level laпguage): язык программирования, который разрабатывался, чтобы быть простым для исполнения компьютером; он называется "маlllliн ным кодом" или "языком ассемблера" .
    Malllliнн ы й код (machine code): низкоуровневый язык программирования для программного обеспечения, который напрямую выполняется CPU.
    Оперативная память (maiп memory): хранит программы и данные, теряет всю информацию, когда прекращается питание компью тера.
    Разбор (parse): исследование программы и анализ синтаксиса.
    Переносимость (portability): свойство программы, которое позволяе т ей выполняться на более, чем одном виде компью тера .

    Оператор печати (print statement): инструкция, которая отображает значение на экране.
    Решение задачи (proЫem solv:iпg): процесс формулировки задачи, поиска решения и реализации.
    Программа (program): набор инструкций, предназначенных для обработки на компьютере.
    Приглашение (prompt): когда программа отображает сообщени е и ожидает ввода пользовательских данных.
    Вторичная память (secoпdary memory): хранит программы, данные и сохраняет информацию после выключения компьютера из сети питания. Примеры вторичной памяти: диски, флеш-память.
    Семантика (semaпtics): смысл программы.
    Семантическая ошибка (semaпtic error): ошибка в программе, когда п роисходит то, что программист не планировал.
    Исходный текст (sошсе code): программа на языке высокого уровня (bl.gh­ level language).

    Переменные, выражения и инструкции (VariaЫes, expressions and statements)

    Видео


      1. Значения и типы


    Значение (valнe) - одно из базовых понятий, с которым работают программы, наподобие букв или чисел. Значения могут выглядеть по­ разному: 1, 2 или 'Hello, World!'.

    Эти значения принадлежат различным типам (types): 2 - это целочисленное значение (integer), 'Hello, World!' - строковое (string), т.к. содержит "строку" букв. Вы (и интерпретатор) можете распознать строки, т.к. они заключаются в кавычки
    Оператор print также работает с целыми числами:
    >>> priпt4

    4
    Если вы не уверены в типе значения, интерпретатор может предоставить вам подсказку:

    >>> type('Hello, World!')



    >>> type(17)


    Не удивительно, что строки принадлежат к типу str, а целые значения - к типу int. Менее очевидно то, что числа с дробной частью принадлежат к типу float, такой формат называется с плавающей точкой (floating-point).
    >>> type(2.2)


    Как насчет '17' и '2.2' ? Они похожи на числа, но кавычки указывают на то, что это строки:

    >>> type('l7')



    >>> type('2.2')


    Они являются строками.
    Если вы встречаете большое число, то может возникнуть соблазн использовать разделители между группами цифр:
    >>> priпt 1,000,000

    100
    Python интерпретировал 1,000,000 как последовательность целых чисел, разделенных запятой, и вывел на экран отдельные числа.
    Мы столкнулись с примером семантической ошибки: код выполняется без сообщений об ошибке, но делает не то, что мы задумывали.


      1. Переменные


    Одна из наиболее мощных особенностей языка программирования - это манипуляция переменными (variaЬles). Перем енная - это имя, которое ссы лается на значение.
    Оператор присваивания (assigпmeпt statemeпt) создает новые переменные и присваивает им значения:

    >>> message = 'And поw for something completely different'

    >>> n = 17

    >>> pi = 2.141592653589793 1
    Этот пример демонстрирует три оператора присваивания. Сначала строка присваивается переменной с именем message; затем значение 17

    - переменной п; тре тье присваивани е - приближенное значение числа piприсваивается переменной pi
    Общий способ представления переменных на бумаге заключается в напи сании имени со стрелкой, направленной на значение этой переменной. Подобный вид схемы называется диаграммой состояний

    (state diagraш), потому что показывает состояние каждой из переменных. Следующая диаграмма показывает результат из предыдущего примера:




    Для отображения на экране значения переменной можно воспользоваться инструкцией pr:int:
    >>> prh1t n 17

    >>> prh1t pi 2.14159265359
    Типы переменных - это типы значений, на которые они ссылаются .
    >>> type(шessage)



    >>> type(n)



    >>> type(pi)


    2.2. Имена переменных и ключевые слова
    Программисты обычно используют для своих переменных понятные имена, которые раскрывают их назначение.
    Имена переменных могут иметь произвольную длину. Они могуг содержать буквы и цифры, но они должны начинаться с буквы. Можно использовать буквы в верхнем регистре, но лучше имена переменных начинать со строчной буквы (вы позже узнаете почему).
    Символ подчеркивания ( _ ) может встречаться в имени переменной. Он часто используется в именах с несколькими словами , такими как шy_name или airspeed _of_Ш1ladeп_swallow.

    Если вы зададите для переменной некорректное имя, то получите синтаксическую оnшбку:
    >>> 76troшbones = 'Ьig parade' SyпtaxError: invalid syntax

    >>> more@ = 1000000 SyпtaxError: invalid syntax

    >>> class = 'Advaпced Тheo reticalZymurgy'

    Sy пtaxError: invalid syntax
    76trombones - неправильное имя, т.к. оно не начинается с буквы. more@

    - неправильное имя, т.к. содержит некорректный символ @. Что не так с class?
    Слово class является зарезервированным (или ключевым) словом (keywords), оно используется Python для распознавания структуры программы и не может быть использовано в качестве имени переменной.
    В Python зарезервировано 31 слово:
    апd del from not while as elif global or with asser t else if pass yield b reak excep t import priпt class ехес in raise coпtiпue :fiпally is return def for lambda try
    В новой версии Python 2.0, ехес больше не является зарезервированным словом, а nonlocal - является.

      1. Операторы


    Инструкции (statemeпt) - это единица измерения кода, кото рую инте рпретатор Python може т вып олнять. Мы уже встречались с двумя видами инс трукций: print (вывод на экран) и присваивани е.
    Когда вы вводите инструкцию в интерактивном режиме, интерпретатор выполняет ее и отображает результат.
    Скрип т обычно содержит последовате льность инструкций. Если инструкций несколько, то результат появляется одновременно с выполнением инструкции.

    Например, выполнение скрипта:
    priпt 1 х=2 priпt х

    п риводит к результату
    1

    2
    Инструкция присваивания ничего не выводит на экран.

      1. Операторы и операнды


    Операторы (operators) - специальные символы, которые представляют вычисления, наподобие сложения и умножения. Значения, к которым применяется оператор, называются операндами (operaпds).
    Операторы +, -, *, / и ** выполняют соответственно сложение, вычитание, умножение и возведение в степень:

    20+32

    hош-1 hoш*б0+шinute шinute/60

    5**2 (5+9)*(15-7)

    о

    Операция деления может привести к неожиданным результат ам:
    >>> miпute = 59

    >>> miпute/60

    о

    Значение переменной miпute равно 59, операция деления 59 на 60 приведет к результату 0.98333 , а не к нулю! Причиной подобного результата в Pythoп является округление (floor division).

    Подробнее об исторических предпосылках округления можно узнать в блоге автора Python:
    ссылка: http://python-blstory.Ыogspot.com/2010/08/why-pytl1ons-integer- diyjsionfloors.html
    Если оба операнда целочисленные, то результат тоже будет цело численным. В нашем примере дробная часть отбрасывается, и в результате пол учаем нуль.
    Если какой-либо из операндов является числом с плавающей точкой, то результат тоже будет типа tloat:
    >>> пuпute/60.0 О.9833333333333333
    В новой версии Pytl10n 2.0, результат деле ни я целоч исленных значен ий будет числом с плавающей точкой.

      1. Выражения


    Вы ражение (expression) - это комбинация значений, переменных и операторов. Значение (или переменная) само по себе является выражением, поэтому все следующие вы ражения являются корректными (предполагается, что переменной х было присвоен о значение):
    17

    х

    х + 17
    Если выражения вводятся в интерактивном режиме, то интерпретатор вычисляет (evaluates) их и отображает результат:
    >>> 1 + 1

    2
    В скрипте подобное выполняться не будет. Вывод результата без использовани я print, работает только в интерактивном режиме Pytl1on!

      1. Порядок операций


    Если в выражении встречается больше, чем один оператор, то порядок вычислений зависит от правил старnmнства (nйes of precedence). Для математических операций, Python следует математическим соглашениям. Аббревиатура PEMDAS является простым способом для запоминания правил:


    • Скобки (Parentheses) имеют наивысnmй приоритет и могут использоваться для принудительного определения порядка вычислений в выражении. Таким образом, результат выражения 2*(3-1) будет равен 4, (1+1)**(5-2) будет равен 8. Вы также можете использовать скобки для упрощения чтения выражений, например, (minute*l00) / 60, если это не повлияет на результат.




    • Возведение в степень (Exponeпtiation) имее т наибо льnmй приоритет, так 2**1+1 равно 3, а не 4, и 3*1**3 равно 3, а не 27.




    • Умножение и деление (Multiplicatioп and Divisioп) имеют одинаковый приоритет, который выше сложение и вычитания (Addition and Subtraction), которые также имеют одинаковый приоритет. Таким образом, 2*3-1 равно 5, а не 4, и 6+4/2 равно 8, а не 5.




    • Операторы с одинаковым приоритетом вычисляются слева направо. Таким образом, 5-3-1 равно 1, а не 2.


    Если вы сомневаетесь, то поставьте скобки.


      1. Модульные операторы


    Модульные опера торы работают с целочис ленными значениями и возвращают остаток от деления (yields the remaiпder) двух операндов. В Python модульный оператор представлен символом (%). Синтаксис у него следующий:
    >>> quotieпt = 7 / 3

    >>> priпt quotient

    2

    >>> reшaiпder = 7 % 3

    >>> priпt remaiпder

    1
    Модульный оператор может быть очень полезен, если вы хотите проверить делится ли х на у без остатка - если х % у равно О.
    Также, вы можете извлечь самую правую цифру или цифры из числа. Например, х % 10 вернет самую правую цифру числа х (по основанию 10).


      1. Строковые операции


    Оп ерато р + работает со строками, но это не сложение в математическом смысле. Вместо этого, выполняется операция конкатенации (concatenation), которая объединяет строки одна за др угой. Нап ример ,
    >>> first = 10

    >>> second = 15

    >>> priпt first+se cond

    25

    >>> first = '100 '

    >>> second = '150'

    >>> priпt first + seco пd 100150


      1. Ввод входных данных


    Иногда необходимо вводить значение переменной, используя клавиатуру. Python предоставляет встроенную функцию raw_iпpнt, которая получает входные значения с клавиатуры. В новой версии Python 2.0 эта функция носит название inpнt. Когда вызывается эта функция, программа останавливается и ожидает действий пользователя. Когда пользователь нажимает Retшn или Enter, программа продолжает выполнени е и raw_input возвращает введенную пользователем строку.
    >>> input = raw_h1put()

    Some silly s tuff

    >>> priпt iпput Some silly stuff
    Перед тем, как получить от пользователя некоторые данные , будет хороIIШм тоном - вывести на экран информацию о том, что пользователю необходимо ввес ти. Вы можете передать эту информацию в качестве входного параметра функции raw_iпput:
    >>> паше = raw_iпput('W hat is your паше?\n') What is your паше?

    Clшck

    >>> prh1t name Clшck
    Последовательность \п в конце приглашения обозначает новую строку (пewliпe), поэтому пользователь начинает ввод со следующей после приглашения строки.
    Если вы ожидаете от пользователя ввода целочисленного значения, то можете воспользоваться функцией iпt для преобразования входной строки в число:
    >>> prompt = 'What...is the airspeed velocity of an шlladen swallow?\n'

    >>> speed = raw_h1put(prompt)

    What...is the airspeed velocity of an urlladen swallow?

    17

    >>>m t(speed)

    17

    >>>m t(speed) + 5

    22
    Не всегда преобразование типов проходит гладко:
    >>> speed = raw_h1put(prompt)

    What...is the airspeed velocity of an urlladen swallow? What do you mean, an African or а Ешо реаn swallow?

    >>>m t(speed)
    Traceback (most receпt call last):

    File "
    ", line 1, in int(speed)
    ValueError: invalid literal for int() with base 10: 'What do you mеап, ап Africaп or а Ешо реаn swallow?'
    Позже мы рассмотрим, как обрабатывать подобные оnmбки.


      1. Комментарии


    Когда программы разрастаются то, их становится сложно читать. Чтобы упрости ть чтение отдельных частей программы в программу добавляются заметки, которые на челов еческом языке рассказывают, что программа делает. Эти заметки называются комментариями и начинаются с символа #.
    # cornpнte the percentage of the hош that has elapsed perceпtage = (miпute * 100) / 60
    Комментарии можно оставлять в конце выражения: perceпtage = (miпute * 100) / 60 # perceпtage of an hош

    Весь текст, начиная от # и до конца строки, игнорируется Python.
    Комментарии призваны ответить на вопрос, почему? Они обычно содержат полезную ин qюрмацию , которой НЕТ в коде.
    2.14. Словарь
    Присв аи вание (assignment): вы ражение, в котором некоторое значение присваивается некоторой переменно й.
    Конкатенация (concatenate): объедине ние двух операндов один за другим.
    Комментарий (comment): инqюрмация в программе, которая

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

    Выражение (expression): комбинация переменных, операторов и значений, представленных единственным результи рующим значением (single result valнe).
    Плаваю щая точка (fl.oating-point): ти п представления чисел с дробной частью.
    Остаток от деления (floor division): операция, которая делит два числа и отсекает дробную часть.

    Целое число (integer) : ти п пред ст авления целых чисел.
    Ключевые слова (keyword): зарезервированные слова, которые используются компилятором для анализа программы; эти слова нельзя использовать в качестве имен переменных.
    Модульный оператор (шodulus operator): оператор, представленный символом (%), который работает с целыми числами и возвращает остаток от деления двух чисел.
    Операнд (operand): одно из значений, которым оперирует оператор.
    Оператор (operator): специальный простые вычисления, подобные конкатенации строк.

    символ, который представляет сложению, умножению или
    Правила старrшшства (rules of precedeпce): набор правил, которые определяют порядок вычисления выражений, содержащих несколько операторов и операндов.
    Диаграмма состояний (state diagram): графическое предста влен ие множества переменных и связанных с ними значений.
    Инструкция (statement): фрагмент кода, представл яющий команду или действие. Например, инструкция присваиван ия или вывода на экран.
    Строка (string): тип представле ни я последовательности символов.

    Тип (type): категории значений . Мы уже встреч али целые (int), с плавающей точкой (float) и строковый (str).
    Значение (value): один из базовых элементов данных, подобно числам или строкам, которыми манипулир ует программа.
    Переменная (variaЬle): им я, связанное со значением.

    Программа "Hello, World!''

    Видео

    Программа "Почасовая оплата"
    Видео

    Условное выполнение
    Видео


      1. Логические выражения


    Логическими (Ьoolean expression) называются выражения, которые могуг принимать одно из двух значений - истина или ложь. В следующем примере используется оператор ==, который сравнивает два операнда и возвращает True, если они равны (equal) или в противном случае False:
    >>> 5 == 5

    True

    >>> 5 == 6

    False
    Тше и False - специальные значения, которые принадлежат к типу Ьоо], они не являются строками:
    >>> type(True) type 'Ьооl'

    >>> type(False) type 'Ьооl'

    >>>
    Оператор == является одним из операторов сравнения (coшpar.isoп operators), другие операторы сравнения:
    х != у# хне равны у х > у # х больше у

    х < у# х меньше у

    х >= у# х больше или равно у х <= у# х меньше или равно у х .is у# х такой же, как у

    х .is not у# хне такой же, как у
    Все эти операции, возможно, вам знакомы, но в Pytlюn их смысл несколько отличается от принятого в математике. Распространенная ошибка заключается в использовании одиночного символа =, вместо

    двойного ==. Запомните, что = является оператором присваивания, а

    == является оператором сравнения. В Python нет подобного =< или =>.


      1. Логические операторы


    Существуют три логических оператора (logical operators): and, or и not. Смысл этих операторов схож с их смыслом в английском языке:
    х > О апd х < 10
    это истинно в случае, если х больше О и меньше 10. n%2 == О or n%3 == О

    это исти нно , если одно из выражений является истин ным.
    В заключение, оператор поt отрицает логическое выражение, так not (х > у)

    истинно , если х > у является ложью, т.е. х меньше или равно у.
    Строго говоря, операнды логических операторов должны быть логическими выражениями, но Python не очень требователен к этому. Любое ненулевое число интерпретируется им как "истинное".
    >>> 17 and True True


      1. Условное исполнение


    Для того чтобы писать полезные программы, почти всегда необходимо проверять условия и изменять поведение программы. Условные инструкции (conditioпal statements) предос тав ляют нам такую возможность. Простейшей формой является инструкция if:
    if x > O:

    priпt 'х is positive'
    Логическое выражение после инструкции if называе тся условием

    (condition). Далее следует символ двоеточия (:) и строка (строки) с отступом.




    Если логическое условие истинно , тогда управление получает выр ажение, записанное с отступами, иначе - выражение пропускается.

    Инстру щия if имеет схожую структуру с определением фующии или цикла for. Инстру щия содержит строку заголовка, которая заканчивается символом двоеточия (:), за которым следует блок с отступом. Подобные инстру щии называютсясоставными (compoш1d stateme nts), т.к. содержат больше одной строки.
    Не существует ограничения на число инстру щий, которые могут встречаться в теле if, но хотя бы одна инстру щия там должна быть. Иногда полезно иметь тело if без инстру щий (обычно оставляют место для кода, который еще не написан). В этом случае можно воспользоваться инстру щией pass, которая ничего не делает.
    if x < O:

    pass # необходимо обработать отрицательные значения!
    Если вы вводите инстру щию if в интерпретаторе Python, то приглашение сменится с трех угловых скобок на три точки (в версии 2.7 наблюдается отступ вместо точек), которые сигнализируют о том, что вы находитесь в блоке инстру щий:
    >>> х = 3

    >>> if x < 10:

    print 'Sma ll'

    Small

    >>>


      1. Альтернативное исполнение


    Второй формой инструщии if является альтернативное исполнение (altemative execution), в котором существуют два направления выполнения и условие определяет, какое из них выполнится. Синтаксис выглядит следующим образом:
    if x%2 ==О:

    print 'х is еvеп'

    else :

    print 'х is odd'
    Если остаток от деления х на 2 равен О, то х-четное, и программа выводит сообщение об этом. Если условие ложно, то выполняется второй набор инструщ ий.







    Так как условие может быть либо истинным, либо ложным, тогда точно выполнится один из вариантов. Варианты называются ветвями (branches), потому что они являются ответвлениями в потоке исполнения.


      1. Последовательность условий


    Иногда имеется больше двух вари антов выполнения, тогда нам необходимо больше двух ветвей. В этом случае, можно воспользоваться сцепленными условиями (chained conditional):

    if x < y:

    print 'х is less than у' elif х > у:

    print 'х is greater tl1a11 у'

    else:

    print 'х and у are equal'
    elif является аббревиатурой от "else if '. Снова будет исполнена точно одна ветвь.



    p1riп t ' le s s '



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

    ifclюice == 'а':

    print 'Bad guess' elif choice == 'Ь':

    priпt 'Good guess' elif choice == 'с':

    priпt 'Close, but поt correct'
    Каждое условие проверяется в порядке расположения. Если первое условие ложно, то проверяется следующее и т.д. Если одно из условий истинно, то выполняется соответствующая ветка, и инструкция завершается. Даже если верно более чем одно условие, все равно

    выполняется только первая истинная ветка.
    5.5. Вложенные условия
    Одно условие может быть вложено в другое. Мы можем записать пример трихотомии (trichotomy):
    if x == у:

    priпt 'х апd у are equal' else:

    if x < у:

    priпt 'х is less tl1a 11 у' else:

    priпt 'х is greater thaп у'
    Bнelllliee условие содержит две ветки. Первая ветка содержит простую инструкцию. Вторая ветка содержит еще одну инструкцию if, которая имеет две ветки. Эти две ветки являются простыми инструкциями, хотя они также моrуг содержать инструкции.






    Хотя отступ инструкций делает структуру более очевидной, вложенные условия (пested coпditioпals) усложн яют чтение исходного кода. Избегайте их по возможности.
    Логические операторы часто позволяют упростить вложенные условные инструкции. Например, мы можем записать следующий код, и спольз уя одно условие:
    if O < х:

    п х < 10:

    priнt 'х is а positive siнgle-digit ш1mber.'
    Инструкция priнt в ыполнится только, если мы зададим ее после обоих условий, также мы получим похожий эффект, использ уя оператор and:
    if О < х апd х < 10:

    priнt 'х is а positive siнgle-digit number.'
    5. 7. Перехват исключений с использованием try и except
    Ранее мы рассматривали код, где использовались функции raw_iнpнt и iнt. Мы также видели их ненадежное исполнение:
    >>> speed = raw_iпpнt(prompt)

    What...is the airspeed velocity of an нnladen swallow? What do уон mean, an African or а Енrореап swallow?

    >>> iнt(speed)

    ValueError: iнvalid literal for iнt()

    >>>
    Когда мы запускали эти инструкции в интерпретаторе Python, то получали строку приглашени я, затем набирали наш текст.
    Пример простой программы, которая перевод температуру по Фаренгейту в температуру по Цельсию:
    iнр = raw_iнpнt('Enter Fahrenheit Temperatнre:') fal1r = :tloat(iнp)

    cel = (fahr - 32.0) * 5.0 / 9.0 priнt cel
    Если мы запустим этот код и введем некорректные данные, то получим недружелюбное сообщение об ошибке:
    Eнter Fal1renheit Tempera tнre:72 22.2222222222

    Enter Fahrenheit Temperatнre:fred Traceback (most receпt call last): File "fашеп.ру", liпe 2, iн

    faЬr = float(.inp)

    ValueError: h1valid literal for float(): fred
    Существует структура условного выполнения, встроенная в PytЬon, которая обрабатывает эти типы ожидаемых и неожиданных 0IШ-1бок, она называется "try / except". Идея try и except заключается в следующем: вы знаете, что некоторая последовательность инструкций может иметь проблемы, и вы хотите добавить некоторые ин струкции , которые бы выполнялись в случае возникновения 0IШ-1бки. Эти дополнительные инструкции (блок except) игно рируются, если 0IШ-1бок не произошло.
    Вы можете представить try и except как страховой полис для последовательности инструкций.
    Перепишем нашу программу о температуре следующим образом:

    .inp = raw _ .inp ut('Enter FaЬrenlleit Temperature:') try:

    faЬr = float(h1p)

    cel = (faЬr - 32.0) * 5.0 / 9.0 pr.int cel

    exce pt:

    prmt 'Please enter а пumber'
    PytЬon начинает выполнение с последовательности инструкций в блоке try. Если все выполняется без 0IШ-1бок, то блок except пропускается. Если произошло исключение (exceptioп) в блоке try, то PytЬon покидает блок try и выполняет последовательность инструкций внутри блока except.
    Enter FaЬrenlleit Tempera ture:72 22.2222222222

    Enter FaЬrenlleit Temperature:fred Please eпter а пшnЬеr
    Обработка исключения с помощью инструкции try называется перехватом (catcblпg) исключения. В рассмотренном примере, блок except выводит на экран сообщение об 0IШ-1бке. В общем , перехват исключения предоставляет вам шанс решить проблему, попытаться

    заново или хотя бы красиво завершить работу программы .
    5.10. Словарь
    Тело (body): последовательность инструкций в составной инструкции.
    Логическое выражение (boolean expression): выражение, значением которого может быть либо True, либо False.

    Ветка (Ьranch): одна из возможных последовательностей инструкций в условной инстр укции .
    Цепочное условие (chaiпed conditional): условная инструкция с несколькими возможными ветками.
    Оператор сравнения (comparison operator): один из операторов, который сравнивает операнды:==, !=, >, <, >= и <=.

    Условная инструкция (conditional statement): инструкция, которая контролирует поток выполнения в зависимости от некоторого условия.
    Условие (conditioп): логическое выражение в условной инструкции, которое определяет, какая ветка выполнится.
    Составная инструкция (compouпd statemeпt): инструкция, которая содержит заголовок и тело. Заголовок заканчивается (:). Тело смещается относительно заголовка.
    Логический оператор (logical operator): один из операторов, которые объединяют логические выражения: апd, or и not.

    Вложенное условие (nested conditioпal): условная инструкция, которая встречаетс я в одной из веток другой условной инструкции.

    Программа "Почасовая переработок"

    оплата

    труда с учетом
    Видео

    Усовершенствование программы "Почасовая оплата трУда с учетом переработок"

    Видео

    Функции

    Видео


      1. Вызов функции


    В контексте программирования, функцией (functioп) назы ва етс я последовательность инструкций, которая вып олняет вычисления. Когда вы задаете функцию, то задаете имя и последовательность инструкций. Позже вы сможете вызвать функцию, обративlllliсь к ней по имени. Мы уже встречали примеры вызова функции (fuпctioп call):
    >>> type(32)


    Функция носит имя t yp e . Выражение в скобках называ ется аргументом (argшneпt) функции. Аргумент - это значение или переменная, которую мы передаем в функцию в качестве входного параметра. Результатом функции type является тип аргумента.
    Проще говоря, функция "берет" аргумен т и "возв ращает" результат. Результат называется возвращаемым значением (return value).


      1. Встроенные функции


    Pythoп п редоставляет несколько важных (Ьuilt-iп) встроенных функций, которые мы можем использовать. Создатели Pythoп написали множество функций, которые решают часто вст речающиеся проблемы и включил эти функции в состав Pytlюn.
    Функции max и min возвращают соответственно наибольшее и наименьшее значения в списке:
    >>> max('Hello world')

    'w'

    >>> miп('Hello world')

    Функция max говорит нам о "наибольшем символе" в строке (который функция нам вернула как ''w''), функция min показывает наименьший символ , которым является пробел.
    Другая очень распространенная встроенная функция - l е n, которая говорит нам, сколько элементов содержится в аргументе. Если аргументом функции len является строка, то она возвращает коли чество символов в строке.
    >>> leп('Hello world')

    11

    >>>
    Эти функции не исчерпываются просмотром строк, они могуг оперировать любым множеством значений, как мы увидим в следующих главах.
    Вы должны обращаться с именами встроенных функций , как с зарезервированными словами (т.е. не используйте max в качестве имени переменной).

      1. Функции, преобразующие типы


    Python также предоставляет встроенны е функции, которые преобразуют значения из одного типа в другой. Функция i n t берет любое значение и преобразует его в целое число, если это возможно:
    >>> int('32') 32

    >>> int('Hello')

    ValueError: h1valid literal for int(): Hello
    Функция i n t может преобразовать число с плавающей точкой в целое, но это не округление, а отсечение дробной части:
    >>> int(З.99999)

    3

    >>> int(-2.3)

    -2

    Функция f 1 оа t преобразует целое и строковое в число с плавающей точкой:

    >>> float(32) 32.0

    >>> float('3.14159')

    3.14159
    В завершении, функция s tr преобразует входные аргументы в строки:
    >>> str(32) '32'

    >>> str(3.14159) '3.14159'


      1. Случайные числа


    Получая одинаковые входные значения, большинство программ каждый раз генерируют одни и те же выходные значения, такие программы можно назвать детерминированными (deteпninistic). Детерминизм обычно является полезной вещью, но для некоторы х приложений необходима непредсказуемость в поведении. Хорошим примером таких приложений являются игры.
    Создание действительно недетерминированных программ - дело не простое, но есть пути создания программ, которые похожи на недетерминированные. Одним из таких способов являются алгоритмы (algorithms) генерации псевдослучайных (pseudoraпdoш) чисел. Псевдослучайные числа не настоящие случайные, т.к. они генерируются на основании детерминированных вычислений, но с виду их не отличить от случайных.
    Модуль r a ndom псевдослучайные "случайными").

    предоставляет функции, числа (которые далее

    которые генерируют мы будем называть
    Функция random возвращает случайное число с плавающей точкой в интервале от О.О до 1 .0 (включая О.О и не включая 1.0). Каждый раз, когда вызывается random, вы получаете следующее число в длинной

    последовательности. Для примера рассмотрим цикл:
    import random for i in raпge(l O):

    х = raпdom.random() print х
    Результатом работы программы будет список из следующих 10 случайных чисел в интервале от О.О до 1 .0 .
    0.301927091705

    0.513787075867

    0.319470430881

    0.285145917252

    0.839069045123

    0.322027080731

    0.550722110248

    0.366591677812

    0.396981483964

    0.838116437404
    Функция r a n d om является одной из функций, которая работает со случайными числами. Функцияr a nd i nt принимает параметры low и high, и возвращает целочисленное значение в интервале от l o w до high (включая оба).
    >>> random.raпdh1t(S, 10)

    5

    >>> ra11dom.ra11dh1t(S, 10)

    9
    Для выбора случайного элемента из последовательности, можно воспользоваться функцией choice:
    >>> t = [1, 2, 3]

    >>> ra11dom.cl1oice(t)

    2

    >>> ra11dom.cl10ice(t)

    3

    Модуль r a n d o m также включает функции, которые генерируют значения от непрерывных распределений, включая Гаусса, экспон енциального , гамма и некоторых других.


      1. Математические функции


    В Python содержится математический модуль (шodule), который предоставляет больuш:нство поп улярн ых математических функций. Перед тем, как его использовать, нам необходимо его импорти ровать :
    >>> import math
    Эта инструкция создает модульный объект (module object), который называется math. Если вы выведите на экран модульный объект, то получите некоторую информацию о нем:
    >>> prh1t math


    Модульный объект содержит функции и переменные, определенные в объекте. Для получения доступа к одной из этих функций, вам необходимо задать имя модуля и имя функции, разделенные точкой (period). Этот формат называется точечной нотацией (dot notation).
    >>> ratio = signal_power / noise_power

    >>> deciliels = 10 * math.logl0(ratio)

    >>> radians = 0.7

    >>> height = math.sh1(radians)
    В перв ом примере вычисляется логарифм по основанию 10 отношения "сигнал-шум". Модуль math также предоставляет функцию l o g , которая вычисляет логарифмы по основанию е.
    Во втором примере вычисляется синусr a d i a ns . Имя переменной подсказывает, что s i n и другие тригонометрические функции (cos, tg и

    т.д.) принимают аргументы в радианах. Для перевода градусов в радианы, разделим на 360 и умножим на 2 *р i :
    >>> degrees = 45

    >>> radians = degrees / 360 .0 * 2 * math.pi

    >>> math.siп(radians) О.70710678 11 8 7
    Выражение ma t h . р i получает значение переменной р i из модуля ma t h. Значением этой переменной является приближенное с точностью до 15 знаков.

      1. 1   2   3   4   5   6   7   8   9   ...   12


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