Информатика и ИКТ — 01. Переменная
Данные, обрабатываемые программой, могут быть:
- константами (их значение не меняется в процессе выполнения программы), например, 2; 1.236; pi
- переменными (значение которых может изменяться).
В языке Pascal константы создаются с помощью объявления констант. Оно выглядит следующим образом:
const имя = значение; например, const g = 9.81;
Переменная — это именованная область памяти для хранения данных, которые могут изменяться в процессе работы программы.
Каждая переменная характеризуется своим именем (идентификатором), типом и значением.
Имя переменной — это последовательность букв и цифр (иногда, еще некоторых символов), однозначно указывающая на переменную. В языке Pascal имя переменной может включать латинские буквы, цифры и знак подчеркивания, причем заглавные и строчные буквы не различаются (то есть WEIGHT, weight и WeiGhT считаются одним и тем же именем). Имя не может начинаться с цифры.
Тип переменной определяет диапазон значений, которые может принимать переменная, и допустимые над этими значениями действия. В языке Pascal есть следующие встроенные типы данных:
- вещественные (действительные) — принимающие действительные числовые значения; к ним относятся real, single, double и extended, отличающиеся точностью.
- целые — для представления целых чисел: integer и longint.
- логический — boolean (допускает только два значения: false — ложь и true — истина).
- символьный — char (значение — любой символ используемой кодовой таблицы).
- и некоторые другие.
Переменная в языке Pascal создается с помощью объявления переменных:
var имена : тип; например, var a, b: real; k: integer;
Чтобы переменная получила значение или изменила его, используется оператор (команда) присваивания:
имя_переменной := выражение; например, a := (b + c) / 2;
Заметьте: при выполнении операции присваивания старое значение переменной теряется безвозвратно. Рассмотрим, как меняются значения переменных при выполнении следующей последовательности команд:
Мы составили здесь так называемую таблицу исполнения программы (фрагмента программы).
Еще раз обратите внимание, что после изменения значения переменной используется только её новое значение. Старое перестает существовать.
Задания
- Запишите в тетради, что такое константа, переменная, тип переменной.
- Укажите, какие из следующих имен нельзя использовать в языке Pascal и почему:
AcDc, zyx32, Rex_T, Mc’Duck, E2e4, Wash&Go
sAlt, 7up, En4LB9, BigBrother, B-52, Abcdefg
- Запишите объявление следующих переменных:
k, m и n целого типа,
flag — логического.
a, b и z вещественного типа,
sym — символьного.
- Запишите оператор присваивания, чтобы…
а) …переменная z получила значение суммы переменных a, b и c;
б) …значение переменной m увеличилось в 5 раз.
а) …переменная k получила значение произведения переменных i, m и n;
б) …значение переменной w уменьшилось в 2 раза
- Составьте таблицу исполнения следующего фрагмента программы:
a := 2;
b := a * 5;
c := 10 * a + b;
a := c / 10;
c := 100 — c * a;
x := 100;
y := x / 5;
z := y * 2 — 30;
y := z * x;
z := y + z * 5;
Типы данных в Python
Ввод, вывод данных и переменные в Python
Большинство программ, даже самых простых, выполняют обработку какой-либо информации – получают разнообразные данные, производят необходимые операции, после чего выводят результат. За ввод и вывод данных в Python отвечают встроенные функции input() и print(). С помощью функции вывода print() можно написать классическую программу Hello, World! в одну строку:
>>> print('Hello, World!') Hello, World!
Для ввода нужной информации используют input(). В этом примере переменная name
с помощью оператора присваивания =
получит введенное пользователем значение:
name = input()
Чтобы пользователю было понятнее, какое именно значение от него ожидает программа, можно добавить пояснение:
name = input('Как тебя зовут? ')
Или:
name = input('Введите свое имя ')
Напишем программу, которая запрашивает имя пользователя и выводит приветствие:
name = input('Как тебя зовут? ') print('Привет,', name)
Результат:
Как тебя зовут? Вася Привет, Вася
В этой программе используются две встроенные функции input() и print(), а также переменная name
. Переменная – это именованная область памяти, в которой во время выполнения программы хранятся данные определенного типа (о типах данных расскажем ниже). В стандартах оформления кода PEP 8 даны рекомендации по названиям переменных:
- Названия не должны начинаться с цифры, но могут заканчиваться цифрой. Например, назвать переменную
7up
– неправильно, а так –seven11
– можно. - Названия могут состоять из комбинации строчных, заглавных букв, цифр и символов подчеркивания:
lower_case
,mixedCase
,CapitalizedCase
,UPPER_CASE
,lower123
. - Не следует давать переменным названия, совпадающие со служебными словами, названиями встроенных функций и методов, к примеру – print, list, dict, set, pass, break, raise.
- Следует избегать использования отдельных букв, которые могут быть ошибочно приняты друг за друга –
l
(L в нижнем регистре),I
(i в верхнем регистре) или за нуль –O
. - В названиях не должно быть пробелов, дефисов и специальных символов, например,
или$
. - Главный принцип именования переменных – осмысленность. По названию переменной должно быть понятно, какого рода данные в ней хранятся – например, car_model, petName, CARD_NUMBER более информативны, чем a, а1, а2.
Переменные выполняют две важные функции:
- делают код понятнее;
- дают возможность многократно использовать введенные данные.
Если программа небольшая, а введенное значение используется однократно, можно обойтись без использования переменной:
print('Привет,', input('Как тебя зовут?'))
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
Интересно, перейти к каналу
Ввод и вывод нескольких переменных, f-строки
Если в программе используются несколько переменных, ввод данных можно оформить на отдельных строках:
first_name = input() last_name = input() age = input()
Или в одну строку:
first_name, last_name, age = input(), input(), input()
Либо так – если значения переменных равны:
x1 = x2 = x3 = input()
Чтобы вывести значения переменных на экран, названия перечисляют в print() через запятую:
print(first_name, last_name, age)
Или по отдельности:
print(first_name) print(last_name) print(age)
Вася Пупкин 12
Вместо пробела можно подставить любой другой разделитель. Например:
print(first_name, last_name, age, sep="***")
В результате значения будут разделены звездочками:
Вася***Пупкин***12
Если нужно вывести значения не в строку, а в столбик, можно воспользоваться специальным параметром end="\n"
– он обеспечивает переход на новую строку:
print(first_name, last_name, age, end="\n")
Чтобы сделать вывод более информативным, используют f-строки:
print(f'Имя: {first_name}, Фамилия: {last_name}, Возраст: {age}')
Все содержимое такой строки находится в конструкции f'...'
, а названия переменных внутри строки заключаются в фигурные скобки {...}
.
Операции во время вывода
Функция print(), помимо вывода результатов работы программы, допускает проведение разнообразных операций с данными:
>>> print(5 + 5) 10 >>> print(10 // 3) 3 >>> print(6 ** 2) 36 >>> print('I' + ' love' + ' Python') I love Python
Встроенные типы данных в Python
Питон работает с двумя категориями данных – встроенными типами (они поддерживаются по умолчанию) и специализированными (для операций с ними нужно подключение определенного модуля).
Все встроенные типы данных в Python можно разделить на следующие группы:
- Числовые – целые, вещественные, комплексные числа. Примечание: для максимально точных расчетов с десятичными числами в Python используют модуль
decimal
(тип данных Decimal), а для операций с рациональными числами (дробями) – модульfractions
(тип данных Fraction). - Булевы – логические значения True (истина) и False (ложь).
- Строковые – последовательности символов в кодировке Unicode.
- NoneType – нейтральное пустое значение, аналогичное null в других языках программирования.
- Последовательности – списки, кортежи, диапазоны.
- Словари – структура данных типа «ключ: значение».
- Множества – контейнеры, содержащие уникальные значения. Подразделяются на изменяемые
set
и неизменяемыеfrozenset
множества. - Байтовые типы –
bytes
(байты),bytearray
(изменяемая байтовая строка),memoryview
(предоставление доступа к внутренним данным объекта).
В таблице приведены примеры и определения встроенных типов данных:
Тип данных | Значение | Определение в Python | Вариант использования |
-3, -2, -1, 0, 1, 2, 3 | int | a = int(input()) | |
Вещественные числа | -1. 5, -1.1, 0.6, 1.7 | float | a = float(input()) |
Комплексные числа | −5i, 3+2i | complex | a = complex(input()) |
Булевы значения | True, False | True, False | flag = True |
NoneType | None | None | a = None |
Строка | ‘abracadabra’ | str | a = str(5) |
Список | [1, 2, 3], [‘a’, ‘b’, ‘c’] | list | a = list((‘a’, ‘b’, ‘c’)) |
Кортеж | (‘red’, ‘blue’, ‘green’) | tuple | a = tuple((‘red’, ‘blue’, ‘green’)) |
Изменяемое множество | {‘black’, ‘blue’, ‘white’}, {1, 3, 9, 7} | set | a = set((‘black’, ‘blue’, ‘white’)) |
Неизменяемое множество | {‘red’, ‘blue’, ‘green’}, {2, 3, 9, 5} | frozenset | a = frozenset((2, 5, 3, 9)) |
Диапазон | 0, 1, 2, 3, 4, 5 | range | a = range(6) |
Словарь | {‘color’: ‘red’, ‘model’: ‘VC6’, ‘dimensions’: ’30×50′} | dict | a = dict(color=’red’, model=’VC6′, dimensions=’30×50′) |
Байты | b’\x00\x00\x00′ | bytes | a = bytes(3) |
Байтовая строка | (b’\x00\x00′) | bytearray | a = bytearray(2) |
Просмотр памяти | 0x1477a5813a00 | memoryview | a = memoryview(bytes(15)) |
Чтобы узнать тип данных, нужно воспользоваться встроенной функцией type():
>>> a = 3. 5 >>> type(a) <class 'float'>
Как задать тип переменной
Важно заметить, что если тип переменной не указан явно при вводе, т.е. ввод выполняется как a = input()
, то Python будет считать введенное значение строкой. В приведенном ниже примере Питон вместо сложения двух чисел выполняет конкатенацию строк:
>>> a, b = input(), input() 5 6 >>> print(a + b) 56
Это произошло потому, что a и b были введены как строки, а не целые числа:
>>> type(a) <class 'str'> >>> type(b) <class 'str'>
Чтобы ввести целое число, следует использовать конструкцию int(input())
, вещественное –float(input())
.
Математические операции в Python
Все операции в математике имеют определенный приоритет: сначала выполняется возведение в степень, затем деление по модулю и так далее. Этот приоритет соблюдается и в Питоне:
Приоритет | Оператор Python | Операция | Пример | Результат |
1 | ** | Возведение в степень | 5 ** 5 | 3125 |
2 | % | Деление по модулю (получение остатка) | 16 % 7 | 2 |
3 | // | Целочисленное деление (дробная часть отбрасывается) | 13 // 3 | 4 |
4 | / | Деление | 39 / 2 | 19. 5 |
5 | * | Умножение | 123 * 321 | 39483 |
6 | — | Вычитание | 999 – 135 | 864 |
7 | + | Сложение | 478 + 32 | 510 |
Python допускает применение сложения и умножения в операциях со строками. Сложение строк, как уже упоминалось выше, называется конкатенацией:
>>> print('Python -' + ' лучший' + ' язык' + ' программирования') Python - лучший язык программирования
Умножение строки на целое число называется репликацией:
>>> print('Репликанты' * 5) РепликантыРепликантыРепликантыРепликантыРепликанты
Однако попытки умножить строки друг на друга или на вещественное число обречены на провал:
>>> print('Репликанты' * 5. 5) Traceback (most recent call last): File "<pyshell>", line 1, in <module> TypeError: can't multiply sequence by non-int of type 'float'
Преобразование типов данных
Python позволяет на лету изменять типы данных. Это может оказаться очень полезным при решении тренировочных и практических задач.
Округление вещественного числа:
>>> a = float(input()) 5.123 >>> print(int(a)) 5
Преобразование целого числа в вещественное:
>>> a = 5 >>> print(float(a)) 5.0
Преобразование строки в число и вывод числа без ведущих нулей:
>>> a = '00032567' >>> print(int(a)) 32567
Сложение строки и числа:
>>> a = 'Apollo ' >>> b = 13 >>> print(a + str(b)) Apollo 13
Преобразование списка в строку:
>>> a = ['п', 'р', 'и', 'в', 'е', 'т'] >>> print('*'. join(a)) п*р*и*в*е*т
Преобразование строки в множество:
>>> a = 'привет' >>> print(set(a)) {'в', 'е', 'и', 'т', 'п', 'р'}
Преобразование строки в список:
>>> a = 'я изучаю Python' >>> print(list(a)) ['я', ' ', 'и', 'з', 'у', 'ч', 'а', 'ю', ' ', 'P', 'y', 't', 'h', 'o', 'n']
Преобразование кортежа в список:
>>> a = ('red', 'blue', 'green') >>> print(list(a)) ['red', 'blue', 'green']
Разумеется, преобразование типов данных происходит в определенных пределах – строку, содержащую буквенные и специальные символы, нельзя сделать числом, а превращение списка, строки, множества или кортежа в словарь потребует дополнительных манипуляций, которые мы изучим позже.
Практика – задачи с решениями
Задание 1. Напишите программу, которая запрашивает имя и возраст пользователя, и выводит приветствие и возраст пользователя в следующем году. Пример работы программы:
Как тебя зовут? Катя Привет, Катя! Сколько тебе лет? 14 Здорово! В следующем году тебе будет 15!
Решение:
name = input('Как тебя зовут? ') print(f'Привет, {name}!') age = int(input('Сколько тебе лет? ')) print(f'Здорово! В следующем году тебе будет {age + 1}!')
Задание 2. Напишите программу, которая запрашивает имя, фамилию и возраст пользователя, а затем выводит эти данные в столбик с помощью f-строки. Результат работы программы:
Имя: Евгения Фамилия: Фролова Возраст: 19
Решение:
first_name = input() last_name = input() age = input() print(f'Имя: {first_name}\nФамилия: {last_name}\nВозраст: {age}')
Задание 3. Напишите программу, которая выводит на экран прямоугольник 5 х 15, сформированный из звездочек. Пример вывода:
*************** * * * * * * ***************
Решение:
print('*' * 15) print('*' + ' ' * 13 + '*') print('*' + ' ' * 13 + '*') print('*' + ' ' * 13 + '*') print('*' * 15)
Задание 4. Напишите программу, которая получает на вход целое число n из диапазона от 1 до 9 включительно, и выводит результат вычисления выражения nnn – nn – n. Например, если введенное число 3, программа должна вывести 297 (333 – 33 – 3).
Решение:
num1 = input() num2 = int(num1 * 2) num3 = int(num1 * 3) print(num3 - num2 - int(num1))
Задание 5. Напишите программу, которая получает на вход целые положительные числа a и b, а затем выводит результаты математических операций в следующем формате:
Число а в степени b = 25 Произведение a * b = 10 Сумма a + b = 7 Разница a - b = 3
Решение:
a, b = int(input()), int(input()) print('Число а в степени b =', a ** b) print('Произведение a * b =', a * b) print('Сумма a + b =', a + b) print('Разница a - b =', a - b)
Задание 6. Напишите программу, которая получает от пользователя вещественные числа a и b – длину и ширину прямоугольника, – и выводит периметр и площадь прямоугольника в следующем формате:
Площадь S = 88.0 Периметр P = 38.0
Площадь вычисляется по формуле S = a * b, периметр P = 2 * (a + b).
Решение:
a, b = float(input()), float(input()) print('Площадь S =', a * b) print('Периметр P =', 2 * (a + b))
Задание 7. Напишите программу, которая получает на вход число от 420 до 540 (оптимальная продолжительность сна в минутах) и помогает пользователю определить, на какое время (в формате «часы:минуты») нужно установить звонок будильника. Отсчет времени начинается с полуночи.
Пример ввода:
470
Вывод:
Поставь будильник на 7:50
Решение:
time = int(input()) print(f'Поставь будильник на {time // 60}:{time % 60}')
Задание 8. Напишите программу, которая получает на вход целое число n – количество дней, и конвертирует n в годы, месяцы и дни.
Пример ввода:
398
Вывод:
Годы: 1 Месяцы: 1 Дни: 3
Решение:
n = int(input("Введите количество дней: ")) years = n // 365 months = (n - years * 365) // 30 days = (n - years * 365 - months * 30) print(f'Годы: {years} Месяцы: {months} Дни: {days}')
Задание 9. Напишите программу, которая получает от пользователя целое число n – количество секунд, и конвертирует n в часы, минуты и секунды.
Пример ввода:
3426
Вывод:
Часы: 0 Минуты: 57 Секунды: 6
Решение:
n = int(input()) seconds = n % (24 * 3600) hours = seconds // 3600 seconds = seconds % 3600 minutes = seconds // 60 seconds = seconds % 60 print(f'Часы: {hours} Минуты: {minutes} Секунды: {seconds}')
Задание 10. Напишите программу, которая получает на вход вещественные числа x1, y1, х2, y2 – координаты точек a (x1, y1) и b (х2, y2) на плоскости – и вычисляет расстояние между a и b.
Пример ввода:
3. 6 6.7 5.4 15.2
Вывод:
10.278618584226189
Решение:
x1, x2, y1, y2 = float(input()), float(input()), float(input()), float(input()) dist = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 print(dist)
Примечание: модуль math, работу с которым мы рассмотрим подробнее позже, имеет функцию dist
для вычисления расстояния между точками на плоскости и в пространстве:
import math x1, x2, y1, y2 = float(input()), float(input()), float(input()), float(input()) a, b = [x1, y1], [x2, y2] d = math.dist(a, b) print(d)
Подведем итоги
В этой части мы рассмотрели базовые типы данных в Python, разобрали дополнительные параметры ввода и вывода, научились преобразовывать одни типы данных в другие, написали первые простые программы. В следующей части будем изучать методы работы со строками.
***
📖 Содержание самоучителя
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП – абстракция и полиморфизм
- Графический интерфейс на Tkinter
- Основы разработки игр на Pygame
***
Материалы по теме
- 🐍🧩 5 задач с решениями на Python для начинающих разработчиков
- 🐍 Аннотации типов в Python: все, что нужно знать за 5 минут
- 🧊 Фундаментальные структуры данных: массивы и связанные списки с реализацией на Python
Базовые типы данных в Python — Real Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Основные типы данных в Python
Теперь вы знаете, как взаимодействовать с интерпретатором Python и выполнять код Python. Пришло время покопаться в языке Python. Сначала рассмотрим основные типы данных, встроенные в Python.
Вот чему вы научитесь в этом уроке:
- Вы узнаете о нескольких основных числовых, строковых и логических типах , которые встроены в Python. К концу этого руководства вы будете знакомы с тем, как выглядят объекты этих типов и как их представлять.
- Вы также получите обзор встроенных в Python функций . Это предварительно написанные фрагменты кода, которые вы можете использовать для выполнения полезных действий. Вы уже видели встроенную функцию
print()
, но есть и много других.
Пройди тест: Проверьте свои знания с помощью нашей интерактивной викторины «Основные типы данных в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Принять участие в викторине »
Целые числа
В Python 3 практически нет ограничений на длину целочисленного значения. Конечно, оно ограничено объемом памяти вашей системы, как и все остальное, но помимо этого целое число может быть сколь угодно длинным:
>>>>>> print(123123123123123123123123123123123123123123123123 + 1) 123123123123123123123123123123123123123123123124
Python интерпретирует последовательность десятичных цифр без префикса как десятичное число:
>>>>>> печать(10) 10
Следующие строки могут быть добавлены к целому значению, чтобы указать основание, отличное от 10:
Префикс | Интерпретация | База |
---|---|---|
0B (ноль + строчная буква 'B' ) 0B (ноль + буква верхней передачи 'B' ) | Двоичный | 2 |
0o (ноль + строчная буква 'o' ) 0O (ноль + прописная буква 'O' ) | Окталь | 8 |
0x (ноль + строчная буква 'x' ) 0X (ноль + заглавная буква 'X' ) | Шестнадцатеричный | 16 |
Например:
>>>>>> печать (0o10) 8 >>> печать (0x10) 16 >>> печать (0b10) 2
Дополнительные сведения о целых числах с недесятичным основанием см. на следующих сайтах Википедии: Двоичный, Восьмеричный и Шестнадцатеричный.
Базовый тип целого числа Python, независимо от базы, используемой для его указания, называется 9.0023 интервал :
>>>>>> тип(10) <класс 'целое'> >>> тип (0o10) <класс 'целое'> >>> тип (0x10) <класс 'целое число'>
Примечание: Самое время упомянуть, что если вы хотите отобразить значение во время сеанса REPL, вам не нужно использовать функцию print() . Просто введите значение в приглашении >>>
и нажмите Введите , чтобы отобразить его:
>>> 10 10 >>> 0x10 16 >>> 0b10 2
Эта функция используется во многих примерах из этой серии руководств.
Обратите внимание, что это не работает внутри файла сценария. Значение, появляющееся в отдельной строке в файле скрипта, ничего не делает.
Удалить рекламуЧисла с плавающей запятой
Тип float
в Python обозначает число с плавающей запятой. float
значения указываются с десятичной точкой. Необязательно, символ e
или E
, за которым следует положительное или отрицательное целое число, может быть добавлено для указания научной записи:
>>> 4.2 4.2 >>> тип(4.2) <класс 'плавающий'> >>> 4. 4.0 >>> .2 0,2 >>> .4e7 4000000,0 >>> тип (.4e7) <класс 'плавающий'> >>> 4.2e-4 0,00042
Глубокое погружение: представление с плавающей запятой
Ниже приведена более подробная информация о том, как Python представляет числа с плавающей запятой внутри. Вы можете легко использовать числа с плавающей запятой в Python, не понимая их до этого уровня, поэтому не беспокойтесь, если это покажется вам слишком сложным. Информация представлена здесь, если вам интересно.
Почти все платформы представляют значения Python
>>>float
как 64-битные значения «двойной точности» в соответствии со стандартом IEEE 754. В этом случае максимальное значение, которое может иметь число с плавающей запятой, составляет приблизительно 1,8 ⨉ 10 308 . Python укажет число больше, чем это, строкойinf
:>>> 1.79e308 1,79е+308 >>> 1.8e308 инфСамое близкое к нулю число, отличное от нуля, приблизительно равно 5,0 ⨉ 10 -324 . Все, что ближе к нулю, эффективно равно нулю:
. >>>>>> 5е-324 5е-324 >>> 1Э-325 0,0Числа с плавающей запятой внутренне представлены в виде двоичных дробей (с основанием 2). Большинство десятичных дробей не могут быть точно представлены как двоичные дроби, поэтому в большинстве случаев внутреннее представление числа с плавающей запятой является приближенным к фактическому значению. На практике разница между фактическим значением и представленным значением очень мала и обычно не должна вызывать значительных проблем.
Дополнительная литература: Дополнительную информацию о представлении чисел с плавающей запятой в Python и возможных ловушках см. в разделе «Арифметика с плавающей запятой: проблемы и ограничения» в документации Python.
Комплексные числа
Комплексные числа задаются как <действительная часть>+<мнимая часть>j
. Например:
>>> 2+3j (2+3к) >>> тип(2+3j) <класс 'сложный'>
Струны
Строки представляют собой последовательности символьных данных. Строковый тип в Python называется str
.
Строковые литералы могут быть заключены в одинарные или двойные кавычки. Все символы между открывающим разделителем и совпадающим закрывающим разделителем являются частью строки:
>>>>>> print("Я строка") Я струна. >>> type("Я строка") <класс 'ул'> >>> print('Я тоже.') Я тоже. >>> type('Я тоже.') <класс 'ул'>
Строка в Python может содержать любое количество символов. Единственным ограничением являются ресурсы памяти вашей машины. Строка также может быть пустой:
>>>>>> '' ''
Что делать, если вы хотите включить символ кавычки как часть самой строки? Вашим первым импульсом может быть попробовать что-то вроде этого:
. >>>>>> print('Эта строка содержит символ одинарной кавычки (').') SyntaxError: неверный синтаксис
Как видите, это не очень хорошо работает. Строка в этом примере открывается одинарной кавычкой, поэтому Python предполагает, что следующая одинарная кавычка, заключенная в круглые скобки, которая должна была быть частью строки, является закрывающим разделителем. Тогда последняя одинарная кавычка является случайной и вызывает показанную синтаксическую ошибку.
Если вы хотите включить в строку символ кавычек любого типа, самый простой способ — разграничить строку символом другого типа. Если строка должна содержать одинарную кавычку, разделите ее двойными кавычками и наоборот:
>>>>>> print("Эта строка содержит символ одинарной кавычки (')".") Эта строка содержит символ одинарной кавычки ('). >>> print('Эта строка содержит символ двойной кавычки ("").') Эта строка содержит символ двойной кавычки ("").
Escape-последовательности в строках
Иногда требуется, чтобы Python по-разному интерпретировал символ или последовательность символов в строке. Это может произойти одним из двух способов:
- Возможно, вы захотите подавить специальную интерпретацию определенных символов, которые обычно задаются в строке.
- Возможно, вы захотите применить специальную интерпретацию к символам в строке, которые обычно воспринимаются буквально.
Это можно сделать с помощью символа обратной косой черты ( \
). Символ обратной косой черты в строке указывает, что один или несколько символов, следующих за ним, должны обрабатываться особым образом. (Это называется escape-последовательностью, потому что обратная косая черта заставляет последующую последовательность символов «экранировать» ее обычное значение.)
Посмотрим, как это работает.
Подавление значения специального символа
Вы уже видели проблемы, с которыми можно столкнуться при попытке включить в строку символы кавычек. Если строка заключена в одинарные кавычки, вы не можете напрямую указать символ одинарной кавычки как часть строки, потому что для этой строки одинарная кавычка имеет особое значение — она завершает строку:
>>>>>> print('Эта строка содержит символ одинарной кавычки ('). ') SyntaxError: неверный синтаксис
Указание обратной косой черты перед символом кавычки в строке «экранирует» его и заставляет Python подавлять его обычное специальное значение. Затем он интерпретируется просто как буквальный символ одинарной кавычки:
. >>>>>> print('Эта строка содержит символ одинарной кавычки (\').') Эта строка содержит символ одинарной кавычки (').
То же самое работает и в строке, заключенной в двойные кавычки:
>>>>>> print("Эта строка содержит символ двойной кавычки (\").") Эта строка содержит символ двойной кавычки ("").
Ниже приведена таблица escape-последовательностей, которые заставляют Python подавлять обычную специальную интерпретацию символа в строке:
Выход Последовательность | Обычная интерпретация символов после обратной косой черты | Интерпретация «Сбежал» |
---|---|---|
| Завершает строку открывающим разделителем одиночной кавычки | Буквенная одинарная кавычка ( ' ) символ |
| Завершает строку открывающим разделителем в виде двойной кавычки | Символ двойной кавычки ( " ) |
\<новая строка> | Завершает входную линию | Новая строка игнорируется |
\ | Вводит управляющую последовательность | Буквенная обратная косая черта ( \ ) символ |
Обычно символ новой строки завершает ввод строки. Так что нажимаю Ввод в середине строки заставит Python считать ее неполной:
>>>>>> print('a SyntaxError: EOL при сканировании строкового литерала
Чтобы разбить строку более чем на одну строку, включите обратную косую черту перед каждой новой строкой, и новые строки будут игнорироваться:
>>>>>> print('a\ ... б\ ... в') азбука
Чтобы включить буквальную обратную косую черту в строку, экранируйте ее обратной косой чертой:
>>>>>> print('foo\\bar') фу\бар
Применение особого значения к символам
Далее предположим, что вам нужно создать строку, содержащую в себе символ табуляции. Некоторые текстовые редакторы позволяют вставлять символ табуляции прямо в код. Но многие программисты считают это плохой практикой по нескольким причинам:
- Компьютер может различать символ табуляции и последовательность пробелов, но вы не можете. Для человека, читающего код, символы табуляции и пробела визуально неразличимы.
- Некоторые текстовые редакторы настроены на автоматическое удаление символов табуляции путем расширения их до соответствующего количества пробелов.
- Некоторые среды Python REPL не будут вставлять вкладки в код.
В Python (и почти во всех других распространенных компьютерных языках) символ табуляции может быть указан escape-последовательностью \t
:
>>> print('foo\tbar') фу бар
Управляющая последовательность \t
приводит к тому, что символ t
теряет свое обычное значение, буквальное t
. Вместо этого комбинация интерпретируется как символ табуляции.
Вот список escape-последовательностей, которые заставляют Python применять особое значение вместо буквальной интерпретации:
Escape-последовательность | Интерпретация «Сбежал» |
---|---|
\а | Колокол ASCII ( BEL ) символ |
\б | ASCII Backspace ( BS ) символ |
\ф | Символ перевода страницы ASCII ( FF ) |
\н | Символ перевода строки ASCII ( LF ) |
\N{<имя>} | Символ из базы данных Unicode с заданным <имя> |
\r | Возврат каретки ASCII ( CR ) символ |
\т | Горизонтальная вкладка ASCII ( TAB ) символ |
\uxxxx | Символ Unicode с 16-битным шестнадцатеричным значением xxxx |
\Uxxxxxxxxx | Символ Unicode с 32-битным шестнадцатеричным значением xxxxxxxx |
\v | Вертикальная табуляция ASCII ( VT ) символ |
\ооо | Символ с восьмеричным значением ooo |
\ххх | Символ с шестнадцатеричным значением hh |
Примеры:
>>>>>> print("a\tb") а б >>> напечатать("а\141\x61") ааа >>> напечатать("а\нб") а б >>> print('\u2192 \N{стрелка вправо}') → →
Этот тип управляющей последовательности обычно используется для вставки символов, которые не могут быть легко сгенерированы с клавиатуры или которые трудно прочитать или распечатать.
Удалить рекламуНеобработанные строки
Необработанному строковому литералу предшествует r
или R
, что указывает, что escape-последовательности в связанной строке не переводятся. В строке остается символ обратной косой черты:
>>> print('foo\nbar') фу бар >>> print(r'foo\nbar') foo\nбар >>> print('foo\\bar') фу\бар >>> print(R'foo\\bar') фу\\бар
Строки в тройных кавычках
В Python есть еще один способ разграничения строк. Строки в тройных кавычках разделяются совпадающими группами из трех одинарных кавычек или трех двойных кавычек. Escape-последовательности по-прежнему работают в строках с тройными кавычками, но одинарные кавычки, двойные кавычки и символы новой строки могут быть включены без их экранирования. Это обеспечивает удобный способ создания строки как с одинарными, так и с двойными кавычками:
. >>>>>> print('''Эта строка имеет одинарную (') и двойную (") кавычки. ''') Эта строка имеет одинарную (') и двойную (") кавычки.
Поскольку новые строки могут быть включены без их экранирования, это также позволяет использовать многострочные строки:
>>>>>> print("""Это строка, которая охватывает через несколько строк""") Это строка, которая охватывает через несколько строк
В предстоящем руководстве по структуре программы Python вы увидите, как можно использовать строки в тройных кавычках для добавления пояснительного комментария к коду Python.
Логический тип, логический контекст и «правдивость»
Python 3 предоставляет логический тип данных. Объекты типа Boolean могут иметь одно из двух значений: True
или False
:
>>> тип (правда) <класс 'буль'> >>> введите (ложь) <класс 'буль'>
Как вы увидите в следующих руководствах, выражения в Python часто оцениваются в логическом контексте, то есть они интерпретируются для представления истины или ложности. Значение, истинное в логическом контексте, иногда называют «истинным», а значение, ложное в логическом контексте, называют «ложным». (Вы также можете увидеть, что «falsy» пишется как «false».)
«Истинность» объекта логического типа очевидна: логические объекты, равные True
, являются истинными (true), а равные False
ложными (false). Но небулевы объекты также могут оцениваться в логическом контексте и определяться как истинные или ложные.
Вы узнаете больше об оценке объектов в логическом контексте, когда столкнетесь с логическими операторами в следующем учебнике по операторам и выражениям в Python.
Встроенные функции
Интерпретатор Python поддерживает множество встроенных функций: шестьдесят восемь, начиная с Python 3.6. Вы раскроете многие из них в следующих обсуждениях по мере их появления в контексте.
Сейчас следует краткий обзор, просто чтобы дать представление о том, что доступно. См. документацию Python по встроенным функциям для более подробной информации. Многие из следующих описаний относятся к темам и концепциям, которые будут обсуждаться в будущих руководствах.
Математика
Функция | Описание |
---|---|
абс() | Возвращает абсолютное значение числа |
разделмод() | Возвращает частное и остаток от целочисленного деления |
макс() | Возвращает наибольший из заданных аргументов или элементов в итерируемом |
мин() | Возвращает наименьший из заданных аргументов или элементов в итерируемом |
мощность() | Возводит число в степень |
раунд() | Округляет значение с плавающей запятой |
сумма() | Суммирует элементы итерируемого объекта |
Преобразование типа
Функция | Описание |
---|---|
ascii() | Возвращает строку, содержащую печатное представление объекта |
бин() | Преобразует целое число в двоичную строку |
логическое() | Преобразует аргумент в логическое значение |
чр() | Возвращает строковое представление символа, заданного целочисленным аргументом |
сложный() | Возвращает комплексное число, составленное из аргументов |
с плавающей запятой() | Возвращает объект с плавающей запятой, созданный из числа или строки |
шестнадцатеричный() | Преобразует целое число в шестнадцатеричную строку |
целое() | Возвращает целочисленный объект, составленный из числа или строки |
окт() | Преобразует целое число в восьмеричную строку |
порядок() | Возвращает целочисленное представление символа |
повтор() | Возвращает строку, содержащую печатное представление объекта |
стр() | Возвращает строковую версию объекта |
тип() | Возвращает тип объекта или создает объект нового типа |
Итераторы и итераторы
Функция | Описание |
---|---|
все() | Возвращает True , если все элементы итерации истинны |
любой() | Возвращает True , если какие-либо элементы итерации истинны |
перечислить() | Возвращает список кортежей, содержащих индексы и значения из итерируемого |
фильтр() | Фильтрует элементы из итерируемого |
итер() | Возвращает объект итератора |
лен() | Возвращает длину объекта |
карта() | Применяет функцию к каждому элементу итерируемого |
следующий() | Извлекает следующий элемент из итератора |
диапазон() | Генерирует диапазон целочисленных значений |
реверс() | Возвращает обратный итератор |
срез() | Возвращает объект среза |
отсортировано() | Возвращает отсортированный список из итерируемого |
zip() | Создает итератор, который объединяет элементы из итерируемых объектов |
Составной тип данных
Функция | Описание |
---|---|
bytearray() | Создает и возвращает объект класса bytearray |
байта() | Создает и возвращает объект размером байта (аналогичный bytearray , но неизменяемый) |
дикт() | Создает объект dict |
замороженный набор() | Создает замороженный набор объект |
список() | Создает список объект |
объект() | Создает новый безликий объект |
набор() | Создает набор объектов |
кортеж() | Создает кортеж объект |
Классы, атрибуты и наследование
Функция | Описание |
---|---|
метод класса() | Возвращает метод класса для функции |
делеттр() | Удаляет атрибут из объекта |
getattr() | Возвращает значение именованного атрибута объекта |
hasattr() | Возвращает True , если объект имеет заданный атрибут |
экземпляр() | Определяет, является ли объект экземпляром данного класса |
подкласс() | Определяет, является ли класс подклассом данного класса |
свойство() | Возвращает значение свойства класса |
setattr() | Устанавливает значение именованного атрибута объекта |
супер() | Возвращает прокси-объект, который делегирует вызовы методов родительскому или одноуровневому классу |
Ввод/вывод
Функция | Описание |
---|---|
формат() | Преобразует значение в форматированное представление |
ввод() | Считывает ввод с консоли |
открыть() | Открывает файл и возвращает файловый объект |
печать() | Печатает в текстовый поток или консоль |
Переменные, ссылки и область действия
Функция | Описание |
---|---|
каталог() | Возвращает список имен в текущей локальной области или список атрибутов объекта |
глобальные() | Возвращает словарь, представляющий текущую глобальную таблицу символов |
идентификатор() | Возвращает идентификатор объекта |
местные () | Обновляет и возвращает словарь, представляющий текущую локальную таблицу символов |
варс() | Возвращает атрибут __dict__ для модуля, класса или объекта |
Разное
Функция | Описание |
---|---|
вызываемый() | Возвращает True , если объект кажется вызываемым |
компиляция() | Компилирует исходный код в код или объект AST |
оценка() | Вычисляет выражение Python |
exec() | Реализует динамическое выполнение кода Python |
хеш() | Возвращает хеш-значение объекта |
помощь() | Вызывает встроенную справочную систему |
просмотр памяти() | Возвращает объект представления памяти |
статический метод() | Возвращает статический метод для функции |
__импорт__() | Вызывается импортом выписка |
Заключение
В этом руководстве вы узнали о встроенных функциях и типов данных , предоставляемых Python .
Все приведенные до сих пор примеры обрабатывали и отображали только постоянные значения. В большинстве программ вы, как правило, захотите создать объекты, значения которых изменяются по мере выполнения программы.
Перейдите к следующему руководству, чтобы узнать о переменных Python .
Пройди тест: Проверьте свои знания с помощью нашей интерактивной викторины «Основные типы данных в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройдите тест »
Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Основные типы данных в Python
Обзор типов данных | Майкрософт учиться
Редактировать Твиттер LinkedIn Фейсбук Электронная почта- Статья
Тип данных — это характеристика переменной, которая определяет, какие данные она может содержать. Типы данных включают те, что указаны в следующей таблице, а также определяемые пользователем типы и определенные типы объектов.
Установка встроенных типов данных
В следующей таблице показаны поддерживаемые типы данных, включая размеры и диапазоны хранения.
Тип данных | Размер хранилища | Диапазон |
---|---|---|
Логический | 2 байта | Верно или Ложно |
Байт | 1 байт | от 0 до 255 |
Коллекция | Неизвестно | Неизвестно |
Валюта (масштабированное целое число) | 8 байт | -922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
Дата | 8 байт | С 1 января 100 г. по 31 декабря 9999 г. |
Десятичный | 14 байт | +/-79 228 162 514 264 337 593 543 950 335 без десятичной точки +/-7,9228162514264337593543950335 с 28 знаками справа от запятой Наименьшее ненулевое число +/-0,00000000000000000000000000001 |
Словарь | Неизвестно | Неизвестно |
Double (двойная точность с плавающей запятой) | 8 байт | от -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений |
Целое число | 2 байта | от -32 768 до 32 767 |
Длинное (Длинное целое) | 4 байта | -2 147 483 648 до 2 147 483 647 |
LongLong (целое LongLong) | 8 байт | от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 Допустимо только на 64-разрядных платформах. |
LongPtr (длинное целое число в 32-разрядных системах, длинное целое число в 64-разрядных системах) | 4 байта в 32-битных системах 8 байтов в 64-битных системах | от -2 147 483 648 до 2 147 483 647 в 32-разрядных системах от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 в 64-разрядных системах |
Объект | 4 байта | Любой Объект ссылка |
Single (с плавающей запятой одинарной точности) | 4 байта | от -3.402823E38 до -1.401298E-45 для отрицательных значений 1.401298E-45 до 3.402823E38 для положительных значений |
Строка (переменной длины) | 10 байт + длина строки | от 0 до примерно 2 миллиардов |
Строка (фиксированной длины) | Длина строки | от 1 до примерно 65 400 |
Вариант (с номерами) | 16 байт | Любое числовое значение в диапазоне Double |
Вариант (с символами) | 22 байта + длина строки (24 байта в 64-разрядных системах) | Тот же диапазон, что и для переменной длины Строка |
Определяется пользователем (с использованием типа ) | Количество, необходимое для элементов | Диапазон каждого элемента совпадает с диапазоном его типа данных. |
Для варианта , содержащего массив, требуется на 12 байт больше, чем для одного массива.
Примечание
Массивы любого типа данных требуют 20 байтов памяти плюс 4 байта для каждого измерения массива плюс количество байтов, занимаемых самими данными. Память, занимаемая данными, может быть рассчитана путем умножения количества элементов данных на размер каждого элемента.
Например, данные в одномерном массиве, состоящем из 4 Integer элементов данных по 2 байта каждый, занимают 8 байт. 8 байтов, необходимых для данных, плюс 24 байта служебных данных, увеличивают общую потребность в памяти для массива до 32 байтов. На 64-битных платформах SAFEARRAY занимает 24 бита (плюс 4 байта на оператор Dim). Элемент pvData представляет собой 8-байтовый указатель, и он должен быть выровнен по 8-байтовым границам.
Примечание
LongPtr не является истинным типом данных, поскольку он преобразуется в Long в 32-разрядных средах или в LongLong в 64-разрядных средах. LongPtr следует использовать для представления значений указателя и дескриптора в операторах Declare и позволяет писать переносимый код, который может работать как в 32-разрядных, так и в 64-разрядных средах.
Примечание
Используйте функцию StrConv для преобразования одного типа строковых данных в другой.
Преобразование между типами данных
См. Функции преобразования типов для примеров использования следующих функций для приведения выражения к определенному типу данных: , CInt , CLng , CLngLng , CLngPtr , CSng , CStr и CVar .
Для следующего см. соответствующие страницы функций: CVErr , Fix и Целое число .
Примечание
CLngLng допустимо только на 64-разрядных платформах.
Проверка типов данных
Чтобы проверить типы данных, см. следующие функции:
- IsArray
- ИсДате
- пусто
- Ошибка
- Отсутствует
- Иснулл
- Иснумерик
- Объект
Возвращаемые значения для CStr
Если выражение равно | Cstr возвращает |
---|---|
Логический | Строка, содержащая True или False . |
Дата | Строка, содержащая дату в кратком формате вашей системы. |
Пустой | Строка нулевой длины («»). |
Ошибка | Строка, содержащая слово Error , за которым следует номер ошибки. |
Нулевой | Ошибка выполнения. |
Другие числовые | Строка, содержащая число. |
См. также
- Константы VarType
- Ключевые слова по задачам
- Справочник по языку Visual Basic
Поддержка и отзывы
У вас есть вопросы или отзывы об Office VBA или этой документации? См.