Типы данных. Переменные. Урок 3
Данные и их типы
В реальной жизни мы совершаем различные действия над окружающими нас предметами, или объектами. Мы меняем их свойства, наделяем новыми функциями. По аналогии с этим компьютерные программы также манипулируют объектами, только виртуальными, цифровыми. Пока не дойдем до уровня объектно-ориентированного программирования, будем называть такие объекты данными.
Очевидно, данные бывают разными. Часто компьютерной программе приходится работать с числами и строками. Так на прошлом уроке мы работали с числами, выполняя над ними арифметические операции. Операция сложения выполняла изменение первого числа на величину второго, а умножение увеличивало одно число в количество раз, соответствующее второму.
Числа в свою очередь также бывают разными: целыми, вещественными, могут иметь огромное значение или очень длинную дробную часть.
При знакомстве с языком программирования Python мы столкнемся с тремя типами данных:
-
целые числа (тип int) – положительные и отрицательные целые числа, а также 0 (например, 4, 687, -45, 0).
-
числа с плавающей точкой (тип float) – дробные, они же вещественные, числа (например, 1.45, -3.789654, 0.00453). Примечание: для разделения целой и дробной частей здесь используется точка, а не запятая.
-
строки (тип str) — набор символов, заключенных в кавычки (например, «ball», «What is your name?», ‘dkfjUUv’, ‘6589’). Примечание: кавычки в Python могут быть одинарными или двойными; одиночный символ в кавычках также является строкой, отдельного символьного типа в Питоне нет.
Операции в программировании
Операция – это выполнение каких-либо действий над данными, которые в данном случае именуют операндами. Само действие выполняет оператор – специальный инструмент. Если бы вы выполняли операцию постройки стола, то вашими операндами были бы доска и гвоздь, а оператором – молоток.
Так в математике и программировании символ плюса является оператором операции сложения по отношению к числам. В случае строк этот же оператор выполняет операцию
>>> 10.25 + 98.36 108.61 >>> 'Hello' + 'World' 'HelloWorld'
Здесь следует для себя отметить, что то, что делает оператор в операции, зависит не только от него, но и от типов данных, которыми он оперирует. Молоток в случае нападения на вас крокодила перестанет играть роль строительного инструмента. Однако в большинстве случаев операторы не универсальны. Например, знак плюса неприменим, если операндами являются, с одной стороны, число, а с другой – строка.
>>> 1 + 'a' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str'
Здесь в строке TypeError: unsupported operand type(s) for +: 'int' and 'str'
интерпретатор сообщает, что произошла ошибка типа – неподдерживаемый операнд для типов int и str.
Изменение типов данных
Приведенную выше операцию все-таки можно выполнить, если превратить число 1 в строку «1». Для изменения одних типов данных в другие в языке Python предусмотрен ряд встроенных в него функций (что такое функция в принципе, вы узнаете в других уроках). Поскольку мы пока работаем только с тремя типами (int, float и str), то рассмотрим только соответствующие им функции: int(), float(), str().
>>> str(1) + 'a' '1a' >>> int('3') + 4 7 >>> float('3.2') + int('2') 5.2 >>> str(4) + str(1.2) '41.2'
Эти функции преобразуют то, что помещается в их скобки соответственно в целое число, вещественное число или строку. Однако надо понимать, что преобразовать можно не все:
>>> int('hi') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'hi'
Здесь возникла ошибка значения (ValueError), так как передан литерал (в данном случае строка с буквенными символами), который нельзя преобразовать к числу с основанием 10.
>>> int('101', 2) 5 >>> int('F', 16) 15
Если вы знаете о различных системах счисления, то поймете, что здесь произошло.
Обратите внимание еще на одно. Данные могут называться значениями, а также литералами. Эти три понятия («данные», «значение», «литерал») не обозначают одно и то же, но близки и нередко употребляются как синонимы. Чтобы понять различие между ними, места их употребления, надо изучить программирование глубже.
Переменные
Данные хранятся в ячейках памяти компьютера. Когда мы вводим число, оно помещается в какую-то ячейку памяти. Но как потом узнать, куда именно? Как впоследствии обращаться к этим данными? Нужно как-то запомнить, пометить соответствующую ячейку.
Раньше, при написании программ на машинном языке, обращение к ячейкам памяти осуществляли с помощью указания их регистров, т. е. конкретно сообщали, куда положить данные и откуда их взять. Однако с появлением ассемблеров при обращении к данным стали использовать словесные
Механизм связи между переменными и данными может различаться в зависимости от языка программирования и типов данных. Пока достаточно запомнить, что в программе данные связываются с каким-либо именем и в дальнейшем обращение к ним возможно по этому имени-переменной.
Слово «переменная» обозначает, что сущность может меняться, она непостоянна. Действительно, вы увидите это в дальнейшем, одна и та же переменная может быть связана сначала с одними данными, а потом – с другими. То есть ее значение может меняться, она переменчива.
В программе на языке Python, как и на большинстве других языков, связь между данными и переменными устанавливается с помощью знака
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
-
Желательно давать переменным осмысленные имена, говорящие о назначении данных, на которые они ссылаются.
-
Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
-
Имя переменной должно начинаться с буквы или символа подчеркивания (_), но не с цифры.
-
Имя переменной не должно содержать пробелы.
Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее вызвать, т. е. написать имя и нажать Enter.
>>> sq = 4 >>> sq 4
Вот более сложный пример работы с переменными в интерактивном режиме:
>>> apples = 100 >>> eat_day = 5 >>> day = 7 >>> apples = apples - eat_day * day >>> apples 65
Здесь фигурируют три переменные: apples, eat_day и day. Каждой из них присваивается свое значение. Выражение
apples = apples - eat_day * day
сложное. Сначала выполняется подвыражение, стоящее справа от знака равенства. После этого его результат присваивается переменной apples, в результате чего ее старое значение (100) теряется. В подвыражении apples - eat_day * day
вместо имен переменных на самом деле используются их значения, т. е. числа 100, 5 и 7.
Практическая работа
-
Переменной var_int присвойте значение 10, var_float — значение 8.4, var_str — «No».
-
Значение, хранимое в переменной var_int, увеличьте в 3.5 раза. Полученный результат свяжите с переменной var_big.
-
Измените значение, хранимое в переменной var_float, уменьшив его на единицу, результат свяжите с той же переменной.
-
Разделите var_int на var_float, а затем var_big на var_float.
Результат данных выражений не привязывайте ни к каким переменным.
-
Измените значение переменной var_str на «NoNoYesYesYes». При формировании нового значения используйте операции конкатенации (+) и повторения строки (*).
-
Выведите значения всех переменных.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
Примитивный тип Булево | 1s-up.ru
Многие, кто только начинает изучать программирование, впервые сталкиваются с новым для себя примитивным типом булево. Еще его по-другому называют логический тип. Данный тип назван в честь английского математика Джорджа Буля, который изучал вопросы математической логики.
Прежде чем начать изучать этот примитивный тип, узнаем вообще, что такое булевы или логические выражения.
Булевы выражения это что-то типа вопроса, на который должен быть однозначные ответ или да, или нет.
5 < 7 — Да;
5 = 8 – Нет;
4 > 9 – Нет.
Так же могу и быть более сложные вопросы:
Кнопка нажата – да;
Или
Кнопка нажата – нет;
Булевы выражения используются во всех условных переходах:
Если Булево выражение1> тогда //операторы ИначеЕсли БулевоВыражение2> тогда //операторы КонецЕсли;
В языке программирования 1С переменную с примитивным типом Булево можно задать явно:
А = Истина; Б = Ложь;
Где Истина и Ложь единственные значения, которые может принимать примитивный тип Булево.
Истина – значит, что какое-то утверждение соответствует действительности (Ответ — Да).
Ложь – значить, что какое-то утверждение, наоборот, не соответствует действительности (Ответ –Нет).
Так же переменные с типом булево могут быть заданы с помощью какого-либо логического выражения.
Например:
А = 5 7; Б = 6 > 9;
В этом случае, в переменой А будет значение Истина, а в переменной типа Б – ложь;
В языке программирования 1С над переменными типа булево можно осуществлять различные операции.
Например:
А = 5 7; Б = 6 > 9; В = А И Б; С = А ИЛИ Б; Д = Не А;
Всего их три – И, ИЛИ и НЕ.
Понять функциональность этих операций помогут следующие таблицы
Операция НЕ
А | Б |
Истина | Ложь |
Ложь | Истина |
Операция И
С = А И Б | А | Б |
Истина | Истина | Истина |
Ложь | Ложь | Истина |
Ложь | Истина | Ложь |
Ложь | Ложь | Ложь |
Операция ИЛИ
С = А ИЛИ Б | А | Б |
Истина | Истина | Истина |
Истина | Ложь | Истина |
Истина | Истина | Ложь |
Ложь | Ложь | Ложь |
А можно ли выполнять данные операции подряд?
Да можно, данные операции будут выполняться слева направо. И иметь следующий уровень старшинства:
Первый: в первую очередь выполняются операции в скобках
Второй: Операция НЕ
Третий: Операция И
Четвертый: Операция ИЛИ.
Чтобы не путаться в операциях, я советую Вам использовать скобки, где только возможно.
Например:
А = Ложь; Б = Истина; С = Ложь; Д = А и С или Б;
В данном случае сначала будет работать операция И между А и С.
Смотрим таблицу А – Ложь, С – Ложь, результат А И С будет Ложь.
Следующим шагом будет выполнение операции ИЛИ между Ложью (Результат предыдущей операции) и значением Б, которое Истина.
Результат будет Истина.
А если нам надо, чтобы прошла сначала операция ИЛИ между С и Б, а потом только операция И между А и тем, что получилось, то для этого необходимо использовать скобки.
Смотрим:
А = Ложь; Б = Истина; С = Ложь; Д = А и (С или Б);
Результат будет диаметрально противоположный. Почему? Сейчас разберем. Благодаря скобкам сначала выполняется операция и между С и Б, т.к. С — Ложь, а Б – Истина, результат будет Истина. Потом между значением А (которое Ложь) и значением Истина (результатом предыдущей операции) выполняется операция И. Результат будет Ложь.
Многие начинающие программисты не совсем до конца понимают принципы взаимодействия между переменными типа Булево. Помочь в этом сможет только практика. А практики с переменными типа Булево достаточно в моем задачнике к книге «Программировать в 1С за 11 шагов»
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс. Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
2 ноября — самый айтишный день в году / Блог компании Edison / Хабр
Пару лет я слежу за днями рождений ключевых (и заодно не очень ключевых) людей в области информационных технологий и computer science. 2 ноября — самый концентрированный день «моего ит-календаря» — аж 6 именинников: ирландец, индус, украинец, двое русских и «американец». 83,(3)% из них люди.Let the Happy Birthday post begin.
Коротко рассказываем о гибкой методологии разработки программного обеспечения (Agile), которую мы используем на проектах в EDISON Software Development Centre.
«Чистая математика была открыта Булем в работе, которую он назвал „Законы мышления“.

— Бертран Рассел
Отец-основатель математической логики и computer science. В его честь назвали тип переменной Boolean в программировании. В прошлом году отмечал 200-летие.
На математические темы Булем в течение жизни были созданы два систематических трактата: «Трактат о дифференциальных уравнениях» и «Трактат о конечных разностях». Эти труды внесли важный вклад в соответствующие разделы математики и в то же время продемонстрировали глубокое понимание Булем философии своего предмета.
«An Investigation of the Laws of Thought»
Основоположник вычислительной техники в СССР. Под его руководством была разработана первая в СССР и континентальной Европе Малая электронно-счётная машина (МЭСМ).
Под его руководством были созданы 15 типов ЭВМ, начиная с ламповых (БЭСМ-1, БЭСМ-2, М-20) и заканчивая современными суперкомпьютерами на интегральных схемах.
Заслужил медаль Колмогорова и премию Кнута.
Независимо от Стивена Кука доказал в 1971 году теорему Кука — Левина, благодаря которой была сформулирована проблема равенства классов P и NP, ставшая одной из задач тысячелетия.
Теорема Кука — Левина утверждает, что задача о выполнимости булевой формулы в КНФ (SAT) является NP-полной.
Читать еще
Легендарный и противоречивый персонаж. Суровый хакерский характер был закален в лихих 80-90х. Начинал с фидо и «разборок» с «настоящим» Касперским. С 2008 года живёт и работает (в McAfee) в США.
На 2008 год издал 16 книг по защите информации и оптимизации программ, компьютерным вирусам и дизассемблированию. Также среди книг — «Энциклопедия примет погоды».
Список книг- Техника и философия хакерских атак.
- Образ мышления — дизассемблер.
- Техника сетевых атак.
- Фундаментальные основы хакерства. Искусство дизассемблирования.
- Записки исследователя компьютерных вирусов.
- Энциклопедия примет погоды. Предсказание погоды по местным признакам.
- Hacker Disassembling Uncovered.
- Shellcoder’s Programming Uncovered.
- Data Recovery Tips & Solutions: Windows, Linux, and BSD.
- CD Cracking Uncovered Protection Against Unsanctioned.
- CD Cracking Uncovered: Protection Against Unsanctioned CD Copying.
- Hacker Debugging Uncovered.
- Code Optimization: Effective Memory Usage.
Любил цитировать Дюну.
Кстати о червях.
Это был первый вирус, получивший значительное внимание в средствах массовой информации.
Он также привёл к первой судимости в США по Computer Fraud and Abuse Act 1986 года.
Индийский «Митник», молодой хакер-индус, плодовитый на книги, защищает правительство, полицию и бюро расследований Индии.
Hacking TALK with Trishneet Arora, The Hacking Era, Hacking With Smart Phones
Видео с хакерёнкомТипы данных, которые необходимо знать:
- String (или str или text ). Используется для комбинации любых символов, которые появляются на клавиатуре , например букв, цифр и символов.
- символ ). Используется для одинарных букв .
- Целое число (или int ). Используется для целых чисел .
- Float (или Real ).Используется для чисел, содержащих десятичные точки , или для Boolean (или bool ). Используется, когда данные ограничены параметрами Истина / Ложь, или да / нет, .
Во многих языках программирования переменные должны быть объявлены перед их использованием, например:
- Visual Basic —
dim score as int
- Java —
int score;
В некоторых языках, таких как Python, вы можете просто начать использовать переменную, не объявляя ее.
Глава 2 | Python для всех
Значение — одна из основных вещей, с которыми работает программа, например, буква или число. До сих пор мы видели следующие значения: 1
, 2
и «Hello, World!»
Эти значения относятся к разным типам : 2
— целое число, и «Hello, World!» представляет собой строку , названную так потому, что она содержит «строку» букв. Вы (и интерпретатор) можете идентифицировать строки, потому что они заключены в кавычки.
Оператор print
также работает для целых чисел. Мы используем команду python
для запуска интерпретатора.
питон
>>> печать (4)
4
Если вы не уверены, какой тип имеет значение, интерпретатор может вам сказать.
Неудивительно, что строки относятся к типу str
, а целые числа относятся к типу int
. Менее очевидно, что числа с десятичной точкой относятся к типу с плавающей запятой
, потому что эти числа представлены в формате с плавающей запятой .
А как насчет таких значений, как «17» и «3,2»? Они выглядят как числа, но заключены в кавычки, как строки.
Это струны.
При вводе большого целого числа у вас может возникнуть соблазн использовать запятые между группами из трех цифр, как в случае 1,000,000
. Это недопустимое целое число в Python, но разрешено:
Ну, это совсем не то, чего мы ожидали! Python интерпретирует 1,000,000
как последовательность целых чисел, разделенных запятыми, которые он печатает с пробелами между ними.
Это первый увиденный нами пример семантической ошибки: код выполняется без вывода сообщения об ошибке, но он не выполняет «правильных» действий.
Одной из самых мощных функций языка программирования является возможность манипулировать переменными . Переменная — это имя, которое относится к значению.
Оператор присваивания создает новые переменные и присваивает им значения:
>>> message = 'А теперь совсем другое'
>>> п = 17
>>> пи = 3.1415926535897931
В этом примере выполняются три назначения. Первый присваивает строку новой переменной с именем message
; второй присваивает целое число от 17
до n
; третий присваивает (приблизительное) значение от π до pi
.
Для отображения значения переменной вы можете использовать оператор печати:
>>> печать (п)
17
>>> печать (пи)
3,141592653589793
Тип переменной — это тип значения, к которому она относится.
>>> тип (сообщение)
<класс 'str'>
>>> тип (n)
<класс 'int'>
>>> тип (пи)
<класс 'float'>
Программисты обычно выбирают имена для своих переменных, которые имеют смысл и документируют, для чего эта переменная используется.
Имена переменных могут быть произвольно длинными. Они могут содержать как буквы, так и цифры, но не могут начинаться с цифры. Допустимо использовать прописные буквы, но рекомендуется начинать имена переменных со строчной буквы (почему вы поймете позже).
В имени может присутствовать символ подчеркивания ( _
). Часто используется в именах, состоящих из нескольких слов, например my_name
или airspeed_of_unladen_swallow
. Имена переменных могут начинаться с символа подчеркивания, но мы обычно этого не делаем, если только мы не пишем код библиотеки для использования другими.
Если вы дадите переменной недопустимое имя, вы получите синтаксическую ошибку:
76trombones
является незаконным, поскольку начинается с числа. more @
является недопустимым, поскольку содержит недопустимый символ @
. Но что не так с class
?
Оказывается, class
является одним из ключевых слов Python . Интерпретатор использует ключевые слова для распознавания структуры программы, и они не могут использоваться в качестве имен переменных.
Python резервирует 33 ключевых слова:
и del от None True
как elif глобальная нелокальная попытка
утверждать иначе, если не в то время
перерыв кроме импорта или с
class False в проходе yield
продолжить, наконец, это поднять
def для возврата лямбда
Вы можете держать этот список под рукой.Если интерпретатор жалуется на одно из ваших имен переменных, а вы не знаете почему, посмотрите, есть ли оно в этом списке.
Оператор — это единица кода, которую может выполнить интерпретатор Python. Мы видели два типа операторов: print как выражение и присваивание.
Когда вы вводите оператор в интерактивном режиме, интерпретатор выполняет его и отображает результат, если он есть.
Сценарий обычно содержит последовательность операторов.Если имеется более одного оператора, результаты появляются по одному по мере выполнения операторов.
Например, скрипт
печать (1)
х = 2
печать (х)
производит вывод
1
2
Оператор присваивания не производит вывода.
Операторы — это специальные символы, которые представляют вычисления, такие как сложение и умножение. Значения, к которым применяется оператор, называются операндами .
Операторы +
, -
, *
, /
и **
выполняют сложение, вычитание, умножение, деление и возведение в степень, как в следующих примерах:
20 + 32 час-1 час * 60 + минута минута / 60 5 ** 2 (5 + 9) * (15-7)
Произошло изменение в операторе деления между Python 2.x и Python 3.x. В Python 3.x результатом этого деления является результат с плавающей запятой:
Оператор деления в Python 2.0 разделит два целых числа и обрежет результат до целого:
>>> минута = 59
>>> минут / 60
0
Чтобы получить тот же ответ в Python 3. 0, используйте напольное (// целочисленное) деление.
В Python 3.0 целочисленное деление выполняет гораздо больше функций, чем можно было бы ожидать, если бы вы вводили выражение на калькуляторе.
Выражение — это комбинация значений, переменных и операторов. Само по себе значение считается выражением, как и переменная, поэтому все следующие допустимые выражения (при условии, что переменной x
присвоено значение):
17
Икс
х + 17
Если вы вводите выражение в интерактивном режиме, интерпретатор оценивает его и отображает результат:
>>> 1 + 1
2
Но в сценарии выражение само по себе ничего не делает! Это частый источник путаницы для новичков.
Упражнение 1: Введите следующие операторы в интерпретатор Python, чтобы увидеть, что они делают:
5
х = 5
х + 1
Когда в выражении появляется более одного оператора, порядок оценки зависит от правил приоритета . Что касается математических операторов, Python следует математическим соглашениям. Акроним PEMDAS — удобный способ запомнить правила:
-
P аренты имеют наивысший приоритет и могут использоваться для принудительного вычисления выражения в нужном вам порядке.Поскольку сначала вычисляются выражения в круглых скобках,
2 * (3-1)
равно 4, а(1 + 1) ** (5-2)
равно 8. Вы также можете использовать круглые скобки, чтобы облегчить чтение выражения. , как в(минута * 100) / 60
, даже если это не меняет результат. -
E xponentiation имеет следующий по величине приоритет, поэтому
2 ** 1 + 1
равно 3, а не 4, и3 * 1 ** 3
равно 3, а не 27. -
M ultiplication и D ivision имеют одинаковый приоритет, который выше, чем A ddition и S ubtraction, которые также имеют такой же приоритет.Итак,
2 * 3-1
равно 5, а не 4, а6 + 4/2
равно 8,0, а не 5. -
Операторы с одинаковым приоритетом оцениваются слева направо. Таким образом, выражение
5-3-1
равно 1, а не 3, потому что сначала выполняется5-3
, а затем1
вычитается из2
.
В случае сомнений всегда заключайте в выражения скобки, чтобы убедиться, что вычисления выполняются в том порядке, в котором вы предполагаете.
Оператор модуля работает с целыми числами и возвращает остаток при делении первого операнда на второй.В Python оператор модуля — это знак процента (%
). Синтаксис такой же, как у других операторов:
Итак, 7, разделенное на 3, равно 2, при этом остается 1.
Оператор модуля оказался на удивление полезным. Например, вы можете проверить, делится ли одно число на другое: если x% y
равно нулю, то x
делится на y
.
Вы также можете извлечь крайнюю правую цифру или цифры из числа. Например,
x% 10
дает крайнюю правую цифру x
(по основанию 10).Аналогичным образом x% 100
возвращает две последние цифры.
Оператор +
работает со строками, но не является сложением в математическом смысле. Вместо этого он выполняет конкатенацию , что означает соединение строк путем их стыковки. Например:
>>> первый = 10
>>> секунда = 15
>>> печать (первая + вторая)
25
>>> first = '100'
>>> second = '150'
>>> печать (первая + вторая)
100150
Результатом этой программы будет 100150
.
Иногда нам нужно получить значение переменной от пользователя с помощью клавиатуры. Python предоставляет встроенную функцию под названием input
, которая получает ввод с клавиатуры. Когда эта функция вызывается, программа останавливается и ждет, пока пользователь что-то напечатает. Когда пользователь нажимает Return
или Enter
, программа возобновляется, и input
возвращает то, что пользователь ввел в виде строки.
>>> ввод = ввод ()
Какие-то глупости
>>> печать (ввод)
Глупости какие-то
Перед получением ввода от пользователя рекомендуется распечатать подсказку, сообщающую пользователю, что вводить.Вы можете передать строку input
для отображения пользователю перед приостановкой ввода:
>>> name = input ('Как тебя зовут? \ N')
Как вас зовут?
Чак
>>> print (имя)
Патрон
Последовательность \ n
в конце подсказки представляет перевод строки , который является специальным символом, который вызывает разрыв строки. Вот почему ввод пользователя отображается под приглашением.
Если вы ожидаете, что пользователь введет целое число, вы можете попытаться преобразовать возвращаемое значение в int
с помощью функции int ()
:
>>> prompt = 'Что...это скорость полета порожней ласточки? \ n '
>>> скорость = ввод (подсказка)
Какая ... скорость полета порожней ласточки?
17
>>> int (скорость)
17
>>> int (скорость) + 5
22
Но если пользователь вводит что-то, кроме строки цифр, вы получаете сообщение об ошибке:
>>> скорость = ввод (подсказка)
Какая .
.. скорость полета порожней ласточки?
Что значит африканская ласточка или европейская?
>>> int (скорость)
ValueError: недопустимый литерал для int () с базой 10:
Мы увидим, как справиться с такого рода ошибками позже.
По мере того, как программы становятся больше и сложнее, их становится труднее читать. Формальные языки сложны, и часто бывает трудно взглянуть на фрагмент кода и понять, что он делает и почему.
По этой причине рекомендуется добавлять примечания к вашим программам, чтобы объяснить на естественном языке, что программа делает. Эти примечания называются комментариями , и в Python они начинаются с символа #
:
# вычислить процент истекшего часа
процент = (минуты * 100) / 60
В этом случае комментарий появляется в отдельной строке.Вы также можете поставить комментарий в конце строки:
процентов = (минуты * 100) / 60 # процентов в часах
Все от \ #
до конца строки игнорируется; это не влияет на программу.
Комментарии наиболее полезны, когда они документируют неочевидные особенности кода. Разумно предположить, что читатель сможет понять, что делает код ; гораздо полезнее объяснить , почему именно .
Этот комментарий повторяется с кодом и бесполезен:
v = 5 # присвоить 5 v
Этот комментарий содержит полезную информацию, которой нет в коде:
v = 5 # скорость в метрах / сек.
Хорошие имена переменных могут уменьшить потребность в комментариях, но длинные имена могут затруднить чтение сложных выражений, поэтому приходится идти на компромисс.
Если вы следуете простым правилам именования переменных и избегаете зарезервированных слов, у вас есть большой выбор при именовании переменных. Вначале этот выбор может сбивать с толку как при чтении программы, так и при написании собственных программ. Например, следующие три программы идентичны с точки зрения того, что они делают, но сильно отличаются, когда вы их читаете и пытаетесь понять.
а = 35,0
b = 12,50
с = а * б
печать (с)
часов = 35,0
ставка = 12,50
оплата = часы * ставка
распечатать (оплатить)
x1q3z9ahd = 35,0
x1q3z9afd = 12,50
x1q3p9afd = x1q3z9ahd * x1q3z9afd
печать (x1q3p9afd)
Интерпретатор Python видит все три программы как в точности как , но люди видят и понимают эти программы совершенно по-разному. Люди быстрее всего поймут намерение второй программы, потому что программист выбрал имена переменных, которые отражают их намерения относительно того, какие данные будут храниться в каждой переменной.
Мы называем эти мудро выбранные имена переменных «мнемоническими именами переменных». Слово мнемоника означает «помощь памяти». Мы выбираем мнемонические имена переменных, чтобы помочь нам запомнить, зачем мы вообще создали эту переменную.
Хотя все это звучит великолепно, и использование мнемонических имен переменных — это очень хорошая идея, мнемонические имена переменных могут мешать начинающему программисту анализировать и понимать код. Это связано с тем, что начинающие программисты еще не запомнили зарезервированные слова (их всего 33), и иногда переменные с слишком описательными именами начинают выглядеть как часть языка, а не просто хорошо подобранные имена переменных.
Взгляните на следующий пример кода Python, который перебирает некоторые данные. Вскоре мы рассмотрим петли, а пока попробуем разгадать, что это означает:
дословно прописью:
печать (слово)
Что здесь происходит? Какие из токенов (for, word, in и т. Д.) Являются зарезервированными словами, а какие — просто именами переменных? Понимает ли Python понятие слов на фундаментальном уровне? Начинающим программистам сложно разделить, какие части кода должны быть такими же, как в этом примере, а какие части кода просто выбраны программистом.
Следующий код эквивалентен приведенному выше коду:
для пиццы:
печать (срез)
Начинающему программисту легче взглянуть на этот код и узнать, какие части являются зарезервированными словами, определенными Python, а какие — просто именами переменных, выбранными программистом. Совершенно очевидно, что Python не имеет фундаментального понимания пиццы и ломтиков и того факта, что пицца состоит из набора из одного или нескольких ломтиков.
Но если наша программа действительно предназначена для чтения данных и поиска слов в данных, pizza
и slice
— очень немнемоничные имена переменных.Выбор их в качестве имен переменных отвлекает от смысла программы.
Через довольно короткий промежуток времени вы будете знать наиболее распространенные зарезервированные слова, и вы начнете видеть, как зарезервированные слова выскакивают на вас:
слово * в * словах *: * \
* печать * слово
Части кода, определенные Python ( для
, в
, print
и :
) выделены жирным шрифтом, а переменные, выбранные программистом ( слов,
и слов,
), не указаны в смелый.Многие текстовые редакторы осведомлены о синтаксисе Python и по-разному окрашивают зарезервированные слова, чтобы дать вам подсказки, как хранить переменные и зарезервированные слова отдельно. Через некоторое время вы начнете читать Python и быстро определите, что такое переменная, а что зарезервировано.
На этом этапе синтаксическая ошибка, которую вы, скорее всего, сделаете, это недопустимое имя переменной, например class
и yield
, которые являются ключевыми словами, или odd ~ job
и US $
, которые содержат недопустимые символы.SyntaxError: недопустимый токен
В случае синтаксических ошибок сообщения об ошибках мало помогают. Наиболее частыми сообщениями являются SyntaxError: недопустимый синтаксис
и SyntaxError: недопустимый токен
, ни одно из которых не является очень информативным.
Ошибка времени выполнения, которую вы, скорее всего, сделаете, это «use before def;» то есть попытка использовать переменную до того, как вы присвоили значение. Это может произойти, если вы неправильно написали имя переменной:
>>> главный = 327.68
>>> процент = основная сумма * ставка
NameError: имя "принцип" не определено
Имена переменных чувствительны к регистру, поэтому LaTeX
не то же самое, что latex
.
На этом этапе наиболее вероятной причиной семантической ошибки является порядок операций. Например, чтобы оценить 1/2 π , у вас может возникнуть соблазн написать
>>> 1,0 / 2,0 * пи
Но деление происходит первым, поэтому вы получите π /2, что не одно и то же! Python не может узнать, что вы хотели написать, поэтому в этом случае вы не получите сообщение об ошибке; вы просто получили неправильный ответ.
- назначение
- Оператор, присваивающий значение переменной.
- объединить
- Для соединения двух операндов от начала до конца.
- комментарий
- Информация в программе, которая предназначена для других программистов (или всех, кто читает исходный код) и не влияет на выполнение программы.
- оценить
-
Для упрощения выражения путем выполнения операций для получения единственного значения.
- выражение
- Комбинация переменных, операторов и значений, представляющая одно значение результата.
- с плавающей точкой
- Тип, представляющий числа с дробными частями.
- целое
- Тип, представляющий целые числа.
- ключевое слово
- Зарезервированное слово, используемое компилятором для анализа программы; вы не можете использовать такие ключевые слова, как
, если
,def
и, а
в качестве имен переменных.
- мнемоника
- Памятка. Мы часто даем переменным мнемонические имена, чтобы помочь нам запомнить, что хранится в переменной.
- оператор модуля
- Оператор, обозначенный знаком процента (
%
), который работает с целыми числами и дает остаток при делении одного числа на другое.
- операнд
- Одно из значений, с которыми работает оператор.
- оператор
- Специальный символ, представляющий простое вычисление, такое как сложение, умножение или конкатенация строк.
- правила старшинства
- Набор правил, управляющих порядком, в котором вычисляются выражения, содержащие несколько операторов и операндов.
- выписка
- Раздел кода, представляющий команду или действие. До сих пор мы видели операторы присваивания и выражения для печати.
- строка
- Тип, представляющий последовательности символов.
- тип
- Категория ценностей.Типы, которые мы видели до сих пор, — это целые числа (тип
int
), числа с плавающей запятой (типfloat
) и строки (типstr
).
- значение
- Одна из основных единиц данных, например число или строка, которыми манипулирует программа.
- переменная
- Имя, которое относится к значению.
Упражнение 2: Напишите программу, которая использует ввод
для запроса имени пользователя и затем приветствует его.
Введите ваше имя: Чак
Привет Чак
Упражнение 3: Напишите программу, предлагающую пользователю указать часы и почасовую ставку для расчета заработной платы брутто.
Введите Часы: 35
Введите скорость: 2,75
Плата: 96.25
Пока мы не будем беспокоиться о том, чтобы в нашей зарплате было ровно две цифры после запятой. Если вы хотите, вы можете поиграть со встроенной функцией Python round
, чтобы правильно округлить полученную сумму до двух знаков после запятой.
Упражнение 4: Предположим, мы выполняем следующие операторы присваивания:
ширина = 17
высота = 12.0
Для каждого из следующих выражений запишите значение выражения и тип (значения выражения).
-
ширина // 2
-
ширина / 2,0
-
высота / 3
-
1 + 2 \ * 5
Используйте интерпретатор Python, чтобы проверить свои ответы.
Упражнение 5: Напишите программу, которая запрашивает у пользователя температуру по Цельсию, переводит ее в градусы Фаренгейта и распечатывает преобразованную температуру.
специалистов по данным: имена ваших переменных ужасны. Вот как их исправить. | by Will Koehrsen
Один из важных моментов, о которых следует помнить при именовании переменных, — это подсчет согласованности. Согласованность с именами переменных означает, что вы тратите меньше времени на поиски имен и больше времени на решение проблемы. Этот момент актуален, когда вы добавляете агрегаты к именам переменных.
Агрегации в именах переменных
Итак, вы освоили основную идею использования описательных имен, изменяя расстояния xs
на
, e
на эффективность и v
на скорость
.Что же произойдет, если взять среднее значение скорости? Должно ли это быть средняя_ скорость
, средняя скорость
или средняя скорость
? Два шага могут решить эту проблему:
- Во-первых, определитесь с общими сокращениями:
avg
для среднего,max
для максимального,std
для стандартного отклонения и так далее.Убедитесь, что все члены команды согласны, и запишите их.
- Укажите аббревиатуру в конце имени. Это помещает самую релевантную информацию, сущность, описываемую переменной, в начало.
Следуя этим правилам, ваш набор агрегированных переменных может быть velocity_avg
, distance_avg
, velocity_min
и distance_max
. Правило 2 — это своего рода личный выбор, и если вы не согласны, ничего страшного, если вы последовательно применяете то правило, которое выберете.
Сложный момент возникает, когда у вас есть переменная, представляющая номер элемента. У вас может возникнуть соблазн использовать building_num
, но относится ли это к общему количеству зданий или к конкретному индексу конкретного здания? Чтобы избежать двусмысленности, используйте building_count
для ссылки на общее количество зданий и building_index
для ссылки на конкретное здание.Вы можете адаптировать это к другим задачам, таким как item_count
и item_index
. Если вам не нравится
count
, тогда item_total
также будет лучшим выбором, чем num
. Этот подход устраняет двусмысленность и поддерживает согласованность размещения агрегатов в конце имен.
Индексы цикла
По какой-то досадной причине типичные переменные цикла стали i
, j
и k
.Это может быть причиной большего количества ошибок и разочарований, чем любая другая практика в области науки о данных. Объедините неинформативные имена переменных с вложенными циклами (я видел вложенные циклы, включающие использование ii
, jj
и даже iii
), и вы получите идеальный рецепт для нечитаемого, подверженного ошибкам кода. Это может быть спорным, но я никогда не использую i
или любую другую букву для переменных цикла, вместо этого я предпочитаю описывать то, что я повторяю, например,
для building_index in range (building_count):
....
или
для row_index в диапазоне (row_count):
для column_index в диапазоне (column_count):
....
Это особенно полезно, когда у вас есть вложенные циклы, поэтому вам не нужно помнить, если i
обозначает строку
или столбец
, или если это было j
или k
. Вы хотите потратить свои умственные ресурсы на выяснение того, как создать лучшую модель, а не на попытки выяснить конкретный порядок индексов массива.
(В Python, если вы не используете переменную цикла, используйте _
в качестве заполнителя.Таким образом, вы не запутаетесь, используется ли индекс.)
Больше имен, которых следует избегать
- Избегайте использования цифр в именах переменных
- Избегайте часто встречающихся ошибок в написании слов на английском языке
- Избегайте имен с неоднозначными символами
- Избегайте имен со схожими значениями
- Избегайте сокращений в именах
- Избегайте имен, которые звучат одинаково
Все они придерживаются принципа приоритета понятности во время чтения, а не удобства во время записи. Кодирование — это в первую очередь метод общения с другими программистами, поэтому помогите членам вашей команды разобраться в ваших компьютерных программах.
Использование типов данных и переменных
В этом руководстве вы узнаете больше о том, как переменные и типы данных используются в Java.
Переменные
Переменные можно рассматривать как «контейнеры» для данных. Каждая переменная должна иметь уникальное имя, чтобы вы могли ссылаться на нее в программе. Используя переменные, мы можем ссылаться на значения, которые еще не были определены.Например, мы можем ссылаться на скорость мяча в разных частях игрового кода, но вычислить скорость мяча позже на основе различных входных данных. Как назвать переменную, в основном зависит от вас, но рекомендуется использовать имена. которые отражают цель, например, mBall
относится к мячу в коде игры. Однако есть некоторые правила для именования переменных в Java, которые необходимо соблюдать: - Имя должно начинаться с буквы, знака доллара « $ »Или подчеркивание« _ ».
- Имя не может быть «зарезервированным словом».Зарезервированные слова используются языком Java для обозначения определенных вещей.
Типы данных
При создании переменной нам также необходимо объявить тип данных, который она содержит. Это связано с тем, что программа будет использовать разные типы данных по-разному. Языки программирования определяют типы данных по-разному. Например, почти во всех языках различаются «целые числа» (или целые числа, например, 12), «нецелые числа» (числа с десятичными знаками, например 0.24) и «символы» (буквы алфавита или слова). Но в Java также есть несколько «примитивных» типов данных:-
char
— один 16-битный символ Unicode, такой как буква, десятичный знак или знак пунктуации. -
boolean
— может иметь только два возможных значения: true (1) или false (0). Этот тип данных полезен в условных операторах, которые мы рассмотрим более подробно на неделе 3. -
байт
— имеет минимальное значение -128 и максимальное значение 127 (включительно). -
короткий
— имеет минимальное значение -32 768 и максимальное значение 32 767 (включительно). -
int:
— имеет минимальное значение -2 147 483 648 и максимальное значение 2 147 483 647 (включительно). -
long
— имеет минимальное значение -9,223,372,036,854,775,808 и максимальное значение 9,223,372,036,854,775,807 (включительно). -
float
— число с плавающей запятой с точностью 32 бита -
double
— это число с плавающей запятой двойной точности.
байт
, короткий
, int
, длинный
, float
и двойной
. Разница между ними заключается в размере и точности значения, которое они содержат. Несколько символов или «строк» (например, слова и предложения) также поддерживаются в Java за счет использования String
.
Объявление переменной
Перед использованием переменной в программе Java ее необходимо объявить. Думайте об этом как о наклейке на контейнер с описанием содержимого.Пример 1
Если вы хотите объявить две переменные целочисленного типа с именами myInteger
и MyInteger
в Java, это будет записано как: int myInteger;
int MyInteger;
Это объявление состоит из 3 частей: сначала объявляется тип данных int
, затем имя переменной myInteger
и, наконец, оператор завершается точкой с запятой ;
. Синтаксис (или порядок) Java требует, чтобы мы заканчивали каждый «оператор» или блок инструкций точкой с запятой.Имена переменных Java чувствительны к регистру, поэтому MyInteger
и myInteger
считаются двумя разными переменными. Чтобы избежать путаницы, лучше выбирать более четкие имена. Пример 2
В этом случае имена переменных указывают на их использование: float mBallSpeedX;
float mBallSpeedY;
mBallSpeedX
удерживает скорость mBall в горизонтальном направлении (или оси X), а mBallSpeedY
удерживает скорость mBall в вертикальном направлении (или оси Y).
поплавок mBallX = 0;
float mBallY = 0;
Это сообщает программе, что переменная с именем mBallX содержит данные с плавающей запятой и что ее значение равно 0 (она находится в 0 по оси X и Y). Область действия
Переменные имеют время жизни, также называемое областью действия. Переменные, объявленные внутри методов, «живут» только внутри методов, тогда как переменные, объявленные вне методов (те, которые мы начинаем со строчной буквы m), могут быть доступны из всех методов, потому что они «живут» внутри класса TheGame.Мы рассмотрим методы (также называемые функциями) более подробно на неделе 6.Теперь вы познакомились с переменными и типами данных и узнали, как объявлять переменную и присваивать ей значения. Вы можете проверить свои знания в викторине в следующий шаг.
2. Значения, выражения и утверждения — Начало программирования на Python для начинающих веб-разработчиков
2.

Мы можем перефразировать наше предыдущее определение компьютерной программы в разговорной речи:
Компьютерная программа — это пошаговый набор инструкций, сообщающих компьютеру на что-то делать с на делать с .
Мы потратим оставшуюся часть этой книги на углубление и уточнение нашего понимание того, какие именно вещей компьютер может делать . Ваш способность эффективно программировать компьютер будет во многом зависеть от вашего способность хорошо понимать эти вещи, так что вы можете выразить то, что вы хотите выполнить на языке, который компьютер может выполнить .
, однако, прежде чем мы перейдем к этому, нам нужно поговорить о материале , на котором компьютеры работают.
Компьютерные программы оперируют данными. Единый фрагмент данных можно назвать датумом, но мы будем использовать связанный термин, значение.
Значение — это одна из фундаментальных вещей — как буква или число —
что программа манипулирует. До сих пор мы видели значения
4
(
результат, когда мы сложили 2 + 2
) и «Hello, World!»
.
Значения сгруппированы в разные типы данных или классы.
Примечание
На уровне аппаратного обеспечения машины все значения сохраняются как
последовательность битов, обычно
представлены цифрами 0
и 1
.Все типы компьютерных данных,
будь то числа, текст, изображения, звуки или что-то еще, в конечном итоге
сводятся к интерпретации этих битовых комбинаций компьютером.
К счастью, языки высокого уровня, такие как Python, дают нам гибкие, высокоуровневые типы данных, которые абстрагируются от утомительных деталей всех этих битов и лучше подходят нашему человеческому мозгу.
4
— целое число и «Hello, World!»
— это строка , так называемая, потому что
он содержит строку букв.Вы (и интерпретатор) можете идентифицировать строки
потому что они заключены в кавычки.
Если вы не уверены, к какому классу относится значение, в Python есть функция с именем тип , который может вам сказать.
>>> type ("Hello, World!") <класс 'str'> >>> тип (17) <класс 'int'>
Неудивительно, что строки принадлежат классу str , а целые числа принадлежат класс int . Менее очевидно, что числа с точкой между целым числовые и дробные части относятся к классу с плавающей запятой , потому что эти числа представлены в формате, называемом с плавающей точкой.На этом этапе можно лечить слова class и type взаимозаменяемы. Мы вернемся к более глубокому понимание того, что такое класс, в следующих главах.
>>> тип (3.2) <класс 'float'>
А как насчет таких значений, как "17"
и "3,2"
? Они похожи на числа, но они
находятся в кавычках, как строки.
>>> тип ("17") <класс 'str'> >>> тип ("3.2") <класс 'str'>
Это струны!
Не используйте запятые в int
s
При вводе большого целого числа у вас может возникнуть соблазн использовать запятые между
группы из трех цифр, как в 42000
. Это недопустимое целое число в
Python, но это означает что-то еще, что является законным:
>>> 42000 42000 >>> 42 000 (42, 0)
Ну, это совсем не то, чего мы ожидали! Из-за запятой Python обрабатывает это как пару значений в кортеже . Итак, не забудьте не ставить запятые или пробелы в целых числах. Также вернитесь к тому, что мы сказали в предыдущая глава: формальные языки строгие, обозначения лаконичны и даже самое маленькое изменение может означать совсем другое, чем то, что вы предназначены.
2.2. Три способа записи строк
Строки в Python могут быть заключены в одинарные кавычки ( '
) или в двойные.
кавычки ( "
), или по три каждого (" "
или " ""
)
>>> type ('Это строка.') <класс 'str'> >>> type ("И это тоже.") <класс 'str'> >>> type ("" "и это." "") <класс 'str'> >>> type ('' 'и даже это ...' '') <класс 'str'>
Строки с двойными кавычками могут содержать внутри одинарные кавычки, как в "Bruce's
beard "
, а строки в одинарных кавычках могут иметь внутри двойные кавычки, как в
'Рыцари, говорящие «Ни!» »
.
Строки, заключенные в три вхождения любого символа кавычки, называются Строки в тройных кавычках. Они могут содержать одинарные или двойные кавычки:
>>> print ('' '«О нет, - воскликнула она, - велосипед Бена сломан!»' '') «О нет, - воскликнула она, - велосипед Бена сломан!» >>>
Строки в тройных кавычках могут занимать даже несколько строк:
>>> message = "" "Это сообщение будет ... охватывать несколько ... строки. "" " >>> печать (сообщение) Это сообщение будет охватить несколько линий.>>>
Python не заботится о том, используете ли вы одинарные или двойные кавычки или трехкомпонентные кавычки, окружающие ваши строки: как только он проанализирует текст ваша программа или команда, способ хранения значения идентичен во всех случаях, и окружающие кавычки не являются частью стоимости. Но когда переводчик хочет отобразить строку, он должен решить, какие кавычки использовать, чтобы она выглядела как струна.
>>> 'Это строка.' «Это строка». >>> "" "А это так."" " «И это тоже».
Итак, разработчики языка Python предпочли обычно окружать свои строки одинарные кавычки. Как вы думаете, что произойдет, если строка уже содержит одинарные кавычки? Попробуйте сами и убедитесь.
2.3. Строковые литералы и escape-последовательности
буквальный нотация для представления постоянного значения встроенного типа данных.
В строковых литералах большинство символов представляют сами себя, поэтому, если мы
Если нужен литерал с буквами s-t-r-i-n-g
, мы просто пишем 'строка'
.
Но что, если мы хотим представить литерал для перевода строки (что вы
при нажатии клавиши s
или t
. Чтобы решить эту проблему
проблема Python использует
escape-последовательность для представления
эти строковые литералы.
Полезно знать несколько таких управляющих последовательностей.
Последовательность выхода |
Значение |
---|---|
|
Обратная косая черта ( |
|
Одинарная кавычка ( |
|
Двойная кавычка ( |
|
Backspace |
|
Перевод строки |
|
Выступ |
\ n
— наиболее часто используемый из них.Следующий пример будет
надеюсь прояснить то, что он делает.
>>> print ("Строка 1 \ n \ n \ nСтрока 5") Строка 1 Строка 5 >>>
2.4. Имена и ведомости присвоения
Чтобы написать программы, которые выполняют действия с материалами , мы теперь вызываем
значений , нам нужен способ хранения наших значений в памяти компьютера и
чтобы назвать их для последующего поиска.
Мы используем Python оператор присваивания только для этой цели:
>>> message = "В чем дело, Док?" >>> п = 17 >>> пи = 3.14159
В приведенном выше примере выполняются три назначения. Первый присваивает строковое значение
"В чем дело, Док?"
на имя сообщение
. Второй дает целое число
17
имя n
, а третий назначает число с плавающей запятой
3,14159
имя пи
.
Операторы присваивания создают имена и связывают эти имена со значениями. В значения могут быть извлечены из памяти компьютера по имени связанные с ними.
>>> сообщение "Как дела, док?" >>> пи 3,14159 >>> п 17 >>> печать (сообщение) Как дела, док?
Имена также называются переменные, поскольку значения, к которым они относятся, могут изменяться во время выполнения программы. У переменных тоже есть типы. Опять же, мы можем спросить переводчика, что они из себя представляют.
>>> тип (сообщение) <класс 'str'> >>> тип (n) <класс 'int'> >>> тип (пи) <класс 'float'>
Тип переменной — это тип значения, к которому она в настоящее время относится.
Обычный способ представить переменные на бумаге — написать имя переменную с линией, соединяющей ее с текущим значением. Такая фигура называется диаграммой объекта. Он показывает состояние переменных в определенный момент времени.
На этой диаграмме показан результат выполнения предыдущих операторов присваивания:
2,5. Переменные
переменныеМы используем переменные в программе, чтобы «запоминать» вещи, например, текущий счет на футбольный матч.Но переменные , переменные . Это означает, что они могут изменить со временем, как табло на футбольном матче. Вы можете присвоить значение переменной, а затем присвоить той же переменной другое значение.
Примечание
Это отличается от математики. В математике, если дать x значение 3, не может быть изменен для ссылки на другое значение на полпути расчеты!
>>> day = "четверг" >>> день 'Четверг' >>> day = "пятница" >>> день 'Пятница' >>> день = 21 >>> день 21 год
Вы заметите, что мы изменили значение день
три раза, а на третий
присваивание мы даже дали ему значение другого типа.
Примечание
Большая часть программирования заключается в том, чтобы компьютер запомнил вещи, например, присвоение переменной количества пропущенных вызовов на вашем телефоне и затем организуйте обновление переменной, если вы пропустите другой вызов.
В оболочке Python ввод имени в командной строке заставляет интерпретатор
найдите значение, связанное с именем (или верните сообщение об ошибке, если
имя не определено), и отображать его. В сценарии определенное имя не в
print
вызов функции вообще не отображается.
2.6. Оператор присваивания —
, а не — знак равенства! Семантика оператора присваивания может сбивать с толку начало
программисты, тем более что маркер присвоения , =
может быть легко
путать с равно (Python использует токен ==
для равенства,
как мы скоро увидим). Это не так!
>>> n = 17 >>> п = п + 1 >>> п 18
Средний оператор выше был бы невозможен, если бы =
означало равно, поскольку
n
никогда не может быть равно n + 1
. Это заявление совершенно законно
Однако Python. Оператор присваивания связывает с именем слева.
сторона оператора, со значением , с правой стороны.
Два n
s в n = n + 1
имеют разные значения: n
на
справа — это поиск в памяти, который заменяется значением, когда правая сторона
оценивается как интерпретатором Python. Он должен уже существовать или имя
ошибка будет результатом.Правая часть оператора присваивания:
оценивается в первую очередь.
n
слева — это имя, присвоенное новому значению, вычисленному справа.
стороны, так как она хранится в памяти компьютера. Это не обязательно должно быть
ранее, поскольку он будет добавлен к доступным именам запущенной программы
если его там еще нет.
Примечание
Имена в Python существуют в контексте, называемом пространство имен, которое мы будем обсудим позже в книге.
Левая часть оператора присваивания должна быть допустимым Python
имя переменной. Вот почему вы получите сообщение об ошибке, если введете:
Подсказка
При чтении или написании кода скажите себе «n имеет 17» или «n получает значение 17 ”. Не говорите «n равно 17».
Примечание
Если вам интересно, жетон — это символ или строка символов, имеющая синтаксическое значение в языке. В Python операторы, ключевые слова, литералы и белое пространство все формы токены на языке.
2.7. Имена переменных и ключевые слова
Допустимые имена переменных в Python должны соответствовать следующим трем простым правила:
-
Это произвольно длинная последовательность букв и цифр.
-
Последовательность должна начинаться с буквы.
-
Помимо a..z и A..Z, нижнее подчеркивание (
_
) представляет собой букву.
Хотя использование прописных букв разрешено, по соглашению мы не используем их. если ты
да, помните, что дело имеет значение.
день
и день
будут разными
переменные.
В имени может присутствовать символ подчеркивания ( _
). Часто используется в
имена, состоящие из нескольких слов, например my_name
или price_of_tea_in_china
.
В некоторых ситуациях имена, начинающиеся с подчеркивания, имеют специальное значение, поэтому безопасное правило для начинающих — начинать все имена с буква кроме подчеркивания.
Если вы дадите переменной недопустимое имя, вы получите синтаксическую ошибку:
>>> 76trombones = "большой парад" SyntaxError: недопустимый синтаксис >>> еще $ = 1000000 SyntaxError: недопустимый синтаксис >>> class = "Информатика 101" SyntaxError: недопустимый синтаксис
76trombones
является незаконным, потому что он не начинается с буквы. подробнее $
является незаконным, поскольку содержит недопустимый символ — знак доллара. Но
что не так с класс
?
Оказывается, класс
является одним из ключевых слов Python . Ключевые слова определяют
правила синтаксиса и структура языка, и они не могут использоваться в качестве переменных
имена.
Python 3 имеет тридцать три ключевых слова (и то и дело улучшения Python вводит или устраняет один или два):
и |
как |
утверждение |
перерыв |
класс |
продолжить |
по умолчанию |
del |
Элиф |
еще |
кроме |
наконец |
для |
из |
по всему миру |
если |
импорт |
из |
— |
лямбда |
нелокальный |
не |
или |
проезд |
поднять |
возврат |
попробовать |
а |
с |
доход |
Верно |
Ложь |
Нет |
Вы можете держать этот список под рукой. На самом деле, как это часто бывает
когда вы учитесь программировать на Python, когда вы в чем-то не уверены,
вы можете спросить Python :
>>> import ключевое слово >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'наконец', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'нелокальный', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
Список ключевых слов, ключевое слово.kwlist
, приходит к нам, соответственно, в
Список Python.
Если интерпретатор жалуется на одно из ваших имен переменных, а вы не знаете почему, посмотрите, есть ли это в этом списке.
Программисты обычно выбирают имена для своих переменных, которые имеют смысл люди, читающие программу — они помогают документу программиста, или помните, для чего используется переменная.
Осторожно
Новички иногда путают значение , значимое для человеческого читателя, с
имеет значение для компьютера . Так они ошибаются, потому что
они назвали некоторую переменную
средним
или пи
, это как-то
автоматически вычислять среднее значение или автоматически связывать переменную
пи
со значением 3,14159. Нет! Компьютер не прикрепляет семантические
значение ваших имен переменных. Это ваше дело.
2,8. Утверждения и выражения
Выписка
инструкция, которую может выполнить интерпретатор Python. Мы видели двоих так
далеко, оператор присваивания и оператор импорта.Некоторые другие виды
Утверждения, которые мы вскоре увидим: , если,
, , а
,
и для
выписок. (Есть и другие виды!)
Когда вы вводите оператор в командной строке, Python выполняет его. В интерпретатор не отображает никаких результатов.
Выражение представляет собой комбинацию значений, переменных, операторов и вызовов функций. Если вы вводите выражение в командной строке Python, интерпретатор оценивает его и отображает результат, который всегда представляет собой значение :
>>> 1 + 1 2 >>> len ('привет') 5
В этом примере len
— встроенная функция Python, которая возвращает число
символов в строке. Ранее мы видели
print
и
, тип
, это наш третий пример функции.
Оценка выражения дает значение, поэтому выражения может появляться справа от операторов присваивания. Ценность все по сам по себе является простым выражением, как и переменная.
>>> 17 17 >>> у = 3,14 >>> x = len ('привет') >>> х 5 >>> у 3,14
2.9. Операторы и операнды
Операторы специальные токены, которые представляют вычисления, такие как сложение, умножение и разделение. Значения, используемые оператором, называются операнды.
Ниже приведены все допустимые выражения Python, значение которых более или менее чистый:
20 + 32 час - 1 час * 60 + минута минута / 60 5 ** 2 (5 + 9) * (15-7)
Жетоны +
и -
и использование скобок для группировки означают в
Python, что они имеют в виду в математике.Звездочка ( *
) — это токен для
умножение, а **
— знак возведения в степень (возведение числа в
мощность).
>>> 2 ** 3 8 >>> 3 ** 2 9
Когда имя переменной появляется вместо операнда, оно заменяется на его значение до выполнения операции.
Сложение, вычитание, умножение и возведение в степень — все делают то, что вы ожидать.
Пример: давайте переведем 645 минут в часы:
>>> минут = 645 >>> часы = минуты / 60 >>> часы 10.75
Ой! В Python 3 оператор деления /
всегда дает число с плавающей запятой.
результат. Возможно, мы хотели знать, сколько всего часов всего
есть, и сколько минут осталось. Python дает нам два разных варианта
оператор деления. Второй, называемый целочисленным делением , использует токен
//
. Он всегда обрезает свой результат до следующего наименьшего целого числа (до
слева на числовой строке).
>>> 7/4 1.75 >>> 7 // 4 1 >>> минут = 645 >>> часы = минуты // 60 >>> часы 10
Позаботьтесь о том, чтобы выбрать правильного оператора деления. Если ты работаешь
с выражениями, где вам нужны значения с плавающей запятой, используйте деление
оператор, который выполняет деление соответствующим образом.
2.10. Оператор модуля
Оператор модуля работает с целыми числами (и целочисленными выражениями) и дает
остаток при делении первого числа на второе.В Python
оператор модуля — знак процента (%
). Синтаксис такой же, как и у других
операторов:
>>> 7 // 3 # оператор целочисленного деления 2 >>> 7% 3 1
Итак, 7 разделить на 3 равно 2 с остатком 1.
Оператор модуля оказался на удивление полезным. Например, вы можете
проверьте, делится ли одно число на другое — если x% y
равно нулю, то
x
делится на y
.
Кроме того, из числа можно извлекать самую правую цифру или цифры.За
Например, x% 10
дает крайнюю правую цифру x
(по основанию 10).
Аналогично x% 100
возвращает две последние цифры.
Это также очень полезно для преобразования, скажем, секунд в часы, минуты и секунды. Итак, давайте напишем программу, которая попросит пользователя ввести секунды, и мы преобразуем их в часы, минуты и оставшиеся секунды.
total_secs = int (input («Сколько секунд, всего?»)) часы = total_secs // 3600 secs_still_remaining = total_secs% 3600 минут = secs_still_remaining // 60 secs_finally_remaining = secs_still_remaining% 60 print (часы, 'часы', минуты, 'минуты', secs_finally_remaining, 'secs')
2.11. Порядок работы
Если в выражении присутствует более одного оператора, порядок оценки зависит от правил приоритета . Python следует тому же приоритету правила для своих математических операторов, которые делает математика. Аббревиатура PEMDAS полезный способ запомнить порядок операций:
-
P аренты имеют наивысший приоритет и могут использоваться для принудительного выполнения выражение для оценки в желаемом порядке.
Поскольку выражения в скобки оцениваются первыми,
2 * (3-1)
равно 4, а(1 + 1) ** (5-2)
равно 8.Вы также можете использовать круглые скобки, чтобы облегчить чтение выражения, как в(минут * 100) / 60
, даже если это не меняет результат. -
E xponentiation имеет следующий наивысший приоритет, поэтому
2 ** 1 + 1
равно 3 и не 4, а3 * 1 ** 3
равно 3, а не 27. -
M ultiplication и оба оператора D ivision имеют одинаковые приоритет, который выше, чем A ddition и S ubtraction, которые также имеют такой же приоритет.Итак,
2 * 3-1
дает 5, а не 4, и5-2 * 2
— это 1, а не 6. #. Операторы с таким же приоритетом оценивается слева направо. В алгебре мы говорим, что они левоассоциативны . Таким образом, в выражении6-3 + 2
сначала выполняется вычитание, в результате чего получается 3.Затем мы добавляем 2, чтобы получить результат 5. Если операции были оценены из справа налево, результатом будет
6- (3 + 2)
, что равно 1. ( аббревиатура PEDMAS может ввести вас в заблуждение, думая, что у дивизиона приоритет перед умножением, а сложение выполняется перед вычитанием — не обманывайтесь.Вычитание и сложение имеют одинаковый приоритет, и применяется правило письма слева направо.)
Примечание
Из-за некоторой исторической причуды, исключение слева направо левоассоциативное правило — это оператор возведения в степень ** , поэтому полезный совет всегда использовать круглые скобки, чтобы установить именно тот порядок, который вы хотите, когда возведение в степень:
>>> 2 ** 3 ** 2 # самый правый ** оператор выполняется первым! 512 >>> (2 ** 3) ** 2 # используйте круглые скобки, чтобы задать нужный вам порядок! 64
Командная строка Python в немедленном режиме отлично подходит для изучения и
экспериментировать с такими выражениями.
2.12. Операции над строками
В общем, вы не можете выполнять математические операции со строками, даже если
строки выглядят как числа. Следующее недопустимо (при условии, что сообщение
имеет строку типа):
- 1 «Привет» / 123 сообщение * «Привет» «15» + 2
Интересно, что оператор +
действительно работает со строками, но для строк оператор
Оператор +
представляет конкатенацию , а не сложение.Конкатенация означает
соединение двух операндов путем их сквозного соединения. Например:
fruit = "банан" baked_good = "ореховый хлеб" печать (фрукты + baked_good)
Результатом этой программы является бананово-ореховый хлеб
. Пробел перед словом
Гайка
является частью струны и необходима для создания зазора между
сцепленные строки.
Оператор *
также работает со строками; он выполняет повторение. Например,
'Fun' * 3
— это 'FunFunFun'
. Один из операндов должен быть строкой; то
other должно быть целым числом.
С одной стороны, такая интерпретация +
и *
имеет смысл по аналогии с
сложение и умножение. Так же, как 4 * 3
эквивалентно 4 + 4 + 4
,
мы ожидаем, что "Fun" * 3
будет таким же, как "Fun" + "Fun" + "Fun"
, и это так.
С другой стороны, существует значительный способ конкатенации строк и
повторение отличается от целочисленного сложения и умножения.Ты можешь
подумайте о том, что сложение и умножение имеют эту строку
конкатенации и повторения нет?
2.13. Функции преобразователя типов
Здесь мы рассмотрим еще три функции Python: int
, float
и str
,
которые (попытаются) преобразовать свои аргументы в типы int
, float
и стр.
соответственно. Мы называем эти преобразователи типа функциями .
Функция int
может принимать число с плавающей запятой или строку и превращать ее
в int. Для чисел с плавающей запятой отбрасывает дробную часть
номера — процесс, который мы называем усечением до нуля в числовой строке.
Давайте посмотрим на это в действии:
>>> интервал (3,14) 3 >>> int (3.9999) # Не округляется до ближайшего int! 3 >>> int (3.0) 3 >>> int (-3.999) # Обратите внимание, что результат ближе к нулю -3 >>> int (минут / 60) 10 >>> int ("2345") # анализируем строку для получения int 2345 >>> int (17) # int работает, даже если его аргумент уже является int 17 >>> int ("23 бутылки") Отслеживание (последний вызов последний): Файл «<интерактивный ввод>», строка 1, в <модуле> ValueError: недопустимый литерал для int () с базой 10: '23 бутылки '
Последний случай показывает, что строка должна быть синтаксически допустимым числом, иначе вы получите одну из этих надоедливых ошибок времени выполнения.
Преобразователь типов с плавающей запятой
может преобразовывать целое число, число с плавающей запятой или синтаксически
юридическая строка в число с плавающей запятой.
>>> поплавок (17) 17.0 >>> float ("123,45") 123,45
Преобразователь типов str
превращает свой аргумент в строку:
>>> str (17) '17' >>> str (123.45) "123,45"
2.14. Вход
В Python есть встроенная функция для получения ввода от пользователя:
name = input ("Пожалуйста, введите ваше имя:")
Пользователь программы может ввести имя и нажать, чтобы вернуть
.Когда это
случается, что введенный текст возвращается из функции input
,
и в этом случае переменной присвоено имя
.
Строковое значение в круглых скобках называется приглашением и содержит сообщение, которое будет отображаться пользователю, когда оператор выполняется для подскажет, свой ответ.
При нажатии клавиши на клавиатуре один символ отправляется на
буфер клавиатуры внутри
компьютер. Когда
клавиша ввода нажата,
последовательность символов внутри буфера клавиатуры в том порядке, в котором они
были получены, возвращаются функцией input
в виде одной строки
ценить.
Даже если вы попросите пользователя ввести его возраст, вы вернете строку вроде
"17"
. Ваша задача как программиста — преобразовать эту строку в
int или float, используя функции конвертера int
или float
, которые мы видели
в предыдущем разделе, который приводит нас к…
2.15. Композиция
Итак, мы рассмотрели элементы программы — переменные, выражения, операторы и вызовы функций — по отдельности, не говоря о том, как объедините их.
Одной из наиболее полезных функций языков программирования является их способность возьмите маленькие строительные блоки и скомпонуйте их в более крупные куски.
Например, мы знаем, как заставить пользователя ввести какой-либо ввод, мы знаем, как преобразовать полученную строку в число с плавающей запятой, мы умеем писать сложные выражение, и мы знаем, как печатать значения. Давайте объединим их в небольшая четырехэтапная программа, которая просит пользователя ввести значение радиуса круг, а затем вычисляет площадь круга по формуле
Сначала мы выполним четыре шага по очереди:
response = input («Какой у вас радиус?») r = float (ответ) площадь = 3.14159 * г ** 2 print ("Площадь есть", площадь)
Теперь давайте объединим первые две строки в одну строку кода и составим вторые две строки в другую строку кода.
r = float (input («Какой у вас радиус?»)) print ("Площадь есть", 3,14159 * r ** 2)
Если бы мы действительно хотели быть хитрыми, мы могли бы записать все в одном выражении:
print («Площадь», 3,14159 * float (input («Какой у вас радиус?»)) ** 2)
Такой компактный код может быть не самым понятным для людей, но он проиллюстрируйте, как мы можем составлять большие куски из наших строительных блоков.
Если вы когда-нибудь сомневаетесь, нужно ли составлять код или фрагментировать его на меньшие шаги, постарайтесь сделать это как можно проще, чтобы человеческий читатель следить.
2.16. Подробнее о функции
print
В конце предыдущей главы вы узнали, что функция печати может
взять серию аргументов, разделенных запятыми, и распечатать строку
с каждым аргументом в порядке, разделенном пробелом.
В примере из предыдущего раздела этой главы вы могли заметить что аргументы не обязательно должны быть строками.
>>> print («Я», 12 + 9, «лет.») Мне 21 лет. >>>
По умолчанию при печати используется один пробел в качестве разделителя и \ n
в качестве разделителя.
терминатор (в конце строки). Оба эти значения по умолчанию могут быть
переопределено.
>>> print ('a', 'b', 'c', 'd') а б в г >>> print ('a', 'b', 'c', 'd', sep = '##', end = '!!') a ## b ## c ## d !! >>>
Вы изучите эти новые возможности функции print
в упражнениях.
2.17. Глоссарий
- оператор присваивания
-
Оператор, который присваивает значение имени (переменной). Слева от оператор присваивания
=
— это имя. Справа от токен присваивания — это выражение, которое оценивается Python переводчик, а затем присвоено имя. Разница между левая и правая части оператора присваивания часто сбивает с толку новых программистов.В присвоении:
n
играет совершенно разную роль на каждой стороне=
.На справа это значение и составляет часть выражения , которое будет оценивается интерпретатором Python перед присвоением имени слева. - токен назначения
-
=
— токен назначения Python, который не следует путать с математическим оператором сравнения, использующим тот же символ. - композиция
-
Возможность объединять простые выражения и утверждения в составные операторы и выражения для представления сложных вычислений лаконично.
- concatenate
-
Для сквозного соединения двух строк.
- тип данных
-
Набор значений. Тип значения определяет, как его можно использовать в выражения. До сих пор вы видели целые числа (
int
), числа с плавающей запятой (float
) и строки (str
). - escape-последовательность
-
Последовательность символов, начинающаяся с escape-символа (
\
) используется для представления строковых литералов, таких как перевод строки и табуляция. - оценка
-
Чтобы упростить выражение, выполнив операции, чтобы дают одно значение.
- выражение
-
Комбинация переменных, операторов и значений, представляющая единственное значение результата.
- float
-
Тип данных Python, в котором хранятся чисел с плавающей запятой . Числа с плавающей запятой хранятся внутри в двух частях: основание , и показатель степени .При печати в стандартном формате они выглядят как десятичные числа. Остерегайтесь ошибок округления при использовании
float
s, и помните, что это только приблизительные значения. - int
-
Тип данных Python, содержащий положительные и отрицательные целые числа.
- целочисленное деление
-
Операция, которая делит одно целое число на другое и возвращает целое число. Целочисленное деление дает только то количество раз, которое числитель делится на знаменатель и отбрасывает остаток.
- ключевое слово
-
Зарезервированное слово, используемое компилятором для синтаксического анализа программы; ты нельзя использовать такие ключевые слова, как
, если
,def
и, а
как переменную имена. - литерал
-
Обозначение для представления постоянного значения единицы встроенных типов Python.
\ n
, например, буквальное представляющий символ новой строки. - оператор модуля
-
Оператор, обозначенный знаком процента (
%
), который работает на целые числа и дает остаток от деления одного числа на еще один. - диаграмма объектов
-
Графическое представление набора переменных (объектов) и значения, к которым они относятся, взятые в определенный момент в течение выполнение программы.
- операнд
-
Одно из значений, с которым работает оператор.
- оператор
-
Специальный символ, который представляет простое вычисление, такое как сложение, умножение или конкатенация строк.
- правила старшинства
-
Набор правил, определяющих порядок, в котором выражения, включающие оцениваются несколько операторов и операндов.
- инструкция
-
Инструкция, которую может выполнить интерпретатор Python. Пока у нас есть видел только оператор присваивания, но скоро мы познакомимся с
импортирует отчет
идля отчета
. - str
-
Тип данных Python, содержащий строку символов.
- строка с тройными кавычками
-
Строка, заключенная в
"" "
или'' '
. Строки с тройными кавычками может занимать несколько строк. - значение
-
Число, строка или любые другие вещи, которые могут быть сохранены в переменная или вычисляется в выражении.
- переменная
-
Имя, которое ссылается на значение.
- имя переменной
-
Имя, присвоенное переменной. Имена переменных в Python состоят из последовательность букв (a.