Переменные вещественного типа: Вещественный тип данных

Содержание

Информатика и ИКТ — 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;

Заметьте: при выполнении операции присваивания старое значение переменной теряется безвозвратно. Рассмотрим, как меняются значения переменных при выполнении следующей последовательности команд:

Мы составили здесь так называемую таблицу исполнения программы (фрагмента программы).

Еще раз обратите внимание, что после изменения значения переменной используется только её новое значение. Старое перестает существовать.

Задания

  1. Запишите в тетради, что такое константа, переменная, тип переменной.
  2. Укажите, какие из следующих имен нельзя использовать в языке Pascal и почему:

AcDc, zyx32, Rex_T, Mc’Duck, E2e4, Wash&Go

sAlt, 7up, En4LB9, BigBrother, B-52, Abcdefg

  1. Запишите объявление следующих переменных:

k, m и n целого типа,

flag — логического.

a, b и z вещественного типа,

sym — символьного.

  1. Запишите оператор присваивания, чтобы…

а) …переменная z получила значение суммы переменных a, b и c;

б) …значение переменной m увеличилось в 5 раз.

а) …переменная k получила значение произведения переменных i, m и n;

б) …значение переменной w уменьшилось в 2 раза

  1. Составьте таблицу исполнения следующего фрагмента программы:

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)
    

При перечислении через запятую Python выводит все переменные в одну строку, разделяя значения пробелами:

Вася Пупкин 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

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

К специализированным типам данных относятся, например, datetime (дата и время) и deque (двухсторонняя очередь).

Все встроенные типы данных в Python можно разделить на следующие группы:

  • Числовые – целые, вещественные, комплексные числа. Примечание: для максимально точных расчетов с десятичными числами в Python используют модуль decimal (тип данных Decimal), а для операций с рациональными числами (дробями) – модуль fractions (тип данных Fraction).
  • Булевы – логические значения True (истина) и False (ложь).
  • Строковые – последовательности символов в кодировке Unicode.
  • NoneType – нейтральное пустое значение, аналогичное null в других языках программирования.
  • Последовательности – списки, кортежи, диапазоны.
  • Словари – структура данных типа «ключ: значение».
  • Множества – контейнеры, содержащие уникальные значения. Подразделяются на изменяемые set и неизменяемые frozenset множества.
  • Байтовые типыbytes (байты), bytearray (изменяемая байтовая строка), memoryview (предоставление доступа к внутренним данным объекта).

В таблице приведены примеры и определения встроенных типов данных:

Тип данныхЗначениеОпределение в PythonВариант использования
Целые числа
-3, -2, -1, 0, 1, 2, 3inta = int(input())
Вещественные числа-1. 5, -1.1, 0.6, 1.7floata = float(input())
Комплексные числа−5i, 3+2icomplexa = complex(input())
Булевы значенияTrue, FalseTrue, Falseflag = True
NoneTypeNone
None
a = None
Строка‘abracadabra’stra = str(5)
Список[1, 2, 3], [‘a’, ‘b’, ‘c’]lista = list((‘a’, ‘b’, ‘c’))
Кортеж(‘red’, ‘blue’, ‘green’)tuplea = tuple((‘red’, ‘blue’, ‘green’))
Изменяемое множество{‘black’, ‘blue’, ‘white’}, {1, 3, 9, 7}seta = set((‘black’, ‘blue’, ‘white’))
Неизменяемое множество{‘red’, ‘blue’, ‘green’}, {2, 3, 9, 5}frozenseta = frozenset((2, 5, 3, 9))
Диапазон0, 1, 2, 3, 4, 5rangea = range(6)
Словарь{‘color’: ‘red’, ‘model’: ‘VC6’, ‘dimensions’: ’30×50′}dicta = dict(color=’red’, model=’VC6′, dimensions=’30×50′)
Байтыb’\x00\x00\x00′bytesa = bytes(3)
Байтовая строка(b’\x00\x00′)bytearraya = bytearray(2)
Просмотр памяти0x1477a5813a00memoryviewa = 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 ** 53125
2%Деление по модулю (получение остатка)16 % 72
3//Целочисленное деление (дробная часть отбрасывается)13 // 34
4/Деление39 / 219. 5
5*Умножение123 * 32139483
6Вычитание999 – 135864
7+Сложение478 + 32510

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, разобрали дополнительные параметры ввода и вывода, научились преобразовывать одни типы данных в другие, написали первые простые программы. В следующей части будем изучать методы работы со строками.

***

📖 Содержание самоучителя

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter
  21. Основы разработки игр на Pygame

***

Материалы по теме

  • 🐍🧩 5 задач с решениями на Python для начинающих разработчиков
  • 🐍 Аннотации типов в Python: все, что нужно знать за 5 минут
  • 🧊 Фундаментальные структуры данных: массивы и связанные списки с реализацией на Python

Базовые типы данных в Python — Real Python