Как вводить нецелые числа в питоне
Перейти к содержимому

Как вводить нецелые числа в питоне

  • автор:

Как разделить нецелое число на составные части и перемножить/сложить

У меня есть такая проблема. Пользователь вводит число с клавиатуры (число может быть целое, а может быть дробное). Нужно перемножить цифры, из которых состоит это число. Потом сложить. Результаты вывести в консоль. Я написала код, но он не работает с дробными числами. Как сделать с дробными числами — ума не приложу. Быть может, нужен список с помощью которого можно бы было вытаскивать цифры. Буду благодарна за помощь.

vvod = str(input('Введите число: ')) proizvedenie = 1 # ибо умножение на ноль приведет к нулю summ = 0 for i in vvod: proizvedenie *= int(i) summ += int(i) print('Сумма введенных чисел = '.format(s = summ)) print('Произведение введенных чисел = 

'.format(p = proizvedenie))

Отслеживать

задан 15 дек 2019 в 15:55

Raisa Tinina Raisa Tinina

51 8 8 бронзовых знаков

сделайте проверку, если символ «.» или «,» то пропустить его и не умножать

15 дек 2019 в 15:57

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Сделал два варианта, первый с помощью try и except, сначала идёт проверка кода в try, если ошибок не было код выполняется, если была ошибка то выполняется код в except. Второй вариант — проверка, если символ не равен «.» или «,» то выполняется умножение и сложение

proizvedenie = 1 # ибо умножение на ноль приведет к нулю summ = 0 for i in vvod: try: proizvedenie *= int(i) summ += int(i) except: continue print('Сумма введенных чисел = '.format(s = summ)) print('Произведение введенных чисел = 

'.format(p = proizvedenie)) proizvedenie = 1 # ибо умножение на ноль приведет к нулю summ = 0 for i in vvod: if i!="," and i!=".": proizvedenie *= int(i) summ += int(i) print('Сумма введенных чисел = '.format(s = summ)) print('Произведение введенных чисел =

'.format(p = proizvedenie))```

Целые числа int в Python

Обычные целые числа в Python имеют тип int и записываются как строки, состоящие из десятичных цифр. Целые числа типа int (положительные и отрицательные) имеют неограниченную точность, могут принимать сколь угодно большие значения. Тип int являются неизменяемым объектом, выполняя операцию над целыми числами, вы получаете новый числовой объект.

Целые числа поддерживают следующие операции:

  • арифметические операции;
  • побитовые операции;
  • операции сравнения.

Тип int в языке Python представлен классом int() , он позволяет:

  • преобразовать строку в целое число типа int с учетом указанного основания системы счисления (десятичные по основанию 10, шестнадцатеричные по основанию 16, восьмеричные по основанию 8 и двоичные по основанию 2).
  • преобразовать вещественные числа типа float в тип int (отбрасывает дробную часть).
  • преобразовать восьмеричные, шестнадцатеричные и двоичные литералы целых чисел в тип int

Класс int() не сможет преобразовать к типу int :

  • числа типа complex , т.к. нет однозначного способа преобразования данного типа чисел.
  • строку с записью числа с плавающей точкой (вещественного числа)

Примеры преобразования объектов к типу int :

# Преобразование строки с записью # целого числа в десятичной форме к типу int >>> int(' -3 ', base=10) # 3 # При преобразовании десятичных литералов, # записанных в строки, основание можно опускать >>> int(' +5 ') # 5 >>> int(' -15_125') # -15125 # Преобразование типа float в тип `int` >>> int(3.23) # 3 >>> int(1.) # 1 >>> int(3.14e-10) # 0 # Восьмеричные литералы и строки с ними - в тип int >>> int(0o177) # 127 >>> int(' 0o177 ', base=8) # 127 # Шестнадцатеричные литералы и строки с ними - в тип int >>> int(0x9ff) # 2559 >>> int(' 0x9ff ', base=16) # 2559 # Двоичные литералы и строки с ними - в тип int >>> int(0b101010) # 42 >>> int('0b101010', base=2) # 42 

Начиная с Python 3.6, чтобы облегчить визуальную оценку величины числа, между цифрами и после любого спецификатора системы счисления разрешается вставлять одиночные символы подчеркивания.

>>> 100_000, 0x_FF_FF, 0o7_777 # (100000, 65535, 4095) 

Целые числа еще могут записываться как, шестнадцатеричные (по основанию 16), восьмеричные (по основанию 8) и двоичные (по основанию 2).

  • Шестнадцатеричные литералы начинаются с комбинации символов 0x или 0X, вслед за которыми следуют шестнадцатеричные цифры (0-9 и A-F). Шестнадцатеричные цифры могут вводиться как в нижнем, так и в верхнем регистре.
  • Литералы восьмеричных чисел начинаются с комбинации символов 0o или 0O (ноль и следующий за ним символ «o» в верхнем или нижнем регистре), вслед за которыми следуют восьмеричные цифры (0-7).
  • Двоичные литералы начинаются с комбинации символов 0b или 0B, вслед за которыми следуют двоичные цифры (0 – 1)

Все эти литералы создают объекты целых чисел, они являются всего лишь альтернативными формами записи значений. Для преобразования целого числа в строку с представлением в любой из трех систем счисления можно использовать встроенные функции hex() , oct() и bin()

Методы типа int :

int.bit_length() :

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

>>> n = -37 >>> bin(n) # '-0b100101' >>> n.bit_length() # 6 
def bit_length(self): # двоичное представление: bin(-37) => '- 0b100101' s = bin(self) # удалить начальные нули и знак минус s = s.lstrip('-0b') # len('100101') => 6 return len(s) 
int.bit_count() :

Добавлен в Python 3.10. Возвращает количество единиц в двоичном представлении абсолютного значения целого числа.

>>> n = 19 >>> bin(n) '0b10011' >>> n.bit_count() # 3 >>> (-n).bit_count() # 3 
def bit_count(self): return bin(self).count("1") 

Новое в Python 3.10.

int.to_bytes(length, byteorder, *, signed=False) :

Возвращает массив байтов, представляющих целое число. Параметры length , byteorder являются обязательными:
— length задает необходимое количество байтов,
— byteorder определяет в каком порядке возвращать байты и имеют значения ‘big’ — от старшего к младшему, ‘little’ — от младшего к старшему.
— signed позволяет установить использование дополнительного кода для представления целого числа. Если signed=False и задано отрицательное целое число, то бросается OverflowError .

>>> (1024).to_bytes(2, byteorder='big') # b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') # b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) # b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() + 7) // 8, byteorder='little') # b'\xe8\x03' 

Если указанных байтов недостаточно для представления числа, то будет вызвано исключение OverflowError. Что бы узнать порядок байтов который использует платформа используйте sys.byteorder .

int.from_bytes(bytes, byteorder, *, signed=False) :

Возвращает целое число, которое соответствует указанному массиву байтов.
Параметры bytes и byteorder являются обязательными.
— bytes должен быть байто-подобным объектом (строки байтов, массивы байтов, array.array и т.д.)
— byteorder определяет в каком порядке возвращать байты и имеют значения ‘big’ — от старшего к младшему, ‘little’ — от младшего к таршему.
— signed позволяет установить использование дополнительного кода для представления целого числа. Если signed=False и задано отрицательное елое число, то бросается OverflowError .

>>> int.from_bytes(b'\x00\x7f', byteorder = 'big') # 127 >>> int.from_bytes(b'\x00\x7f', byteorder = 'little') # 32512 >>> int.from_bytes(b'\xff\x81', 'big', signed = True) # -127 >>> int.from_bytes([1, 0], 'big') # можно указать "массив" байтов # 256 >>> int.from_bytes([255, 255], 'big') # 65535 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Утиная типизация ‘Duck Typing’
  • Что такое вызываемый объект callable?
  • Как проверить тип переменной/объекта
  • Логический тип данных bool
  • Целые числа int
  • Ограничение длины преобразования целочисленной строки
  • Вещественные числа float
  • Комплексные числа complex
  • Типы последовательностей
  • Список list
  • Кортеж tuple
  • Диапазон range
  • Текстовые строки str
  • Словарь dict
  • Множество set и frozenset
  • Итератор Iterator, протокол итератора
  • Генератор generator и выражение yield
  • Контекстный менеджер with
  • Байтовые строки bytes
  • Байтовый массив bytearray
  • Тип memoryview, буфер обмена
  • Файловый объект file object
  • Универсальный псевдоним GenericAlias
  • Объект объединения Union

Числа: целые, вещественные, комплексные

Python 3 логотип

Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.

Целые числа (int)

Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

x + y Сложение
x — y Вычитание
x * y Умножение
x / y Деление
x // y Получение целой части от деления
x % y Остаток от деления
-x Смена знака числа
abs(x) Модуль числа
divmod(x, y) Пара (x // y, x % y)
x ** y Возведение в степень
pow(x, y[, z]) x y по модулю (если модуль задан)

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

Над целыми числами также можно производить битовые операции

x | y Побитовое или
x ^ y Побитовое исключающее или
x & y Побитовое и
x

Битовый сдвиг влево
x >> y Битовый сдвиг вправо
~x Инверсия битов

Дополнительные методы

int.bit_length() — количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.

 int.to_bytes(length, byteorder, *, signed=False) - возвращает строку байтов, представляющих это число.
 int.from_bytes(bytes, byteorder, *, signed=False) - возвращает число из данной строки байтов.

Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

  • int([object], [основание системы счисления]) — преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
  • bin(x) — преобразование целого числа в двоичную строку.
  • hex(х) — преобразование целого числа в шестнадцатеричную строку.
  • oct(х) — преобразование целого числа в восьмеричную строку.

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

 Для высокой точности используют другие объекты (например Decimal и Fraction)).

Также вещественные числа не поддерживают длинную арифметику:

Простенькие примеры работы с числами:

float.as_integer_ratio() — пара целых чисел, чьё отношение равно этому числу.

float.is_integer() — является ли значение целым числом.

float.hex() — переводит float в hex (шестнадцатеричную систему счисления).

classmethod float.fromhex(s) — float из шестнадцатеричной строки.

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

Модуль math предоставляет более сложные математические функции.

 

В Python встроены также и комплексные числа:

     : complex()   Для работы с комплексными числами используется также модуль cmath.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Работа с числами в Python

В этом материале рассмотрим работу с числами в Python. Установите последнюю версию этого языка программирования и используйте IDE для работы с кодом, например, Visual Studio Code.

В Python достаточно просто работать с числами, ведь сам язык является простым и одновременно мощным. Он поддерживает всего три числовых типа:

  • int (целые числа)
  • float (числа с плавающей точкой)
  • complex (комплексные числа)

Хотя int и float присутствуют в большинстве других языков программирования, наличие типа комплексных чисел — уникальная особенность Python. Теперь рассмотрим в деталях каждый из типов.

Целые и числа с плавающей точкой в Python

В программирование целые числа — это те, что лишены плавающей точкой, например, 1, 10, -1, 0 и так далее. Числа с плавающей точкой — это, например, 1.0, 6.1 и так далее.

Создание int и float чисел

Для создания целого числа нужно присвоить соответствующее значение переменной. Возьмем в качестве примера следующий код:

var1 = 25

Здесь мы присваиваем значение 25 переменной var1 . Важно не использовать одинарные или двойные кавычки при создании чисел, поскольку они отвечают за представление строк. Рассмотрим следующий код.

 
var1 = "25"
# или
var1 = '25'

В этих случаях данные представлены как строки, поэтому не могут быть обработаны так, как требуется. Для создания числа с плавающей точкой, типа float , нужно аналогичным образом присвоить значение переменной.

var1 = 0.001

Здесь также не стоит использовать кавычки.

Проверить тип данных переменной можно с помощью встроенной функции type() . Можете проверить результат выполнения, скопировав этот код в свою IDE.

 
var1 = 1 # создание int
var2 = 1.10 # создание float
var3 = "1.10" # создание строки
print(type(var1))
print(type(var2))
print(type(var3))

В Python также можно создавать крупные числа, но в таком случае нельзя использовать запятые.

 
# создание 1,000,000
var1 = 1,000,000 # неправильно

Если попытаться запустить этот код, то интерпретатор Python вернет ошибку. Для разделения значений целого числа используется нижнее подчеркивание. Вот пример корректного объявления.

 
# создание 1,000,000
var1 = 1_000_000 # правильно
print(var1)

Значение выведем с помощью функции print :

1000000

Арифметические операции над целыми и числами с плавающей точкой

Используем такие арифметические операции, как сложение и вычитание, на числах. Для запуска этого кода откройте оболочку Python, введите python или python3 . Терминал должен выглядеть следующим образом:

Python IDLE

Сложение

В Python сложение выполняется с помощью оператора + . В терминале Python выполните следующее.

Результатом будет сумма двух чисел, которая выведется в терминале.

Работа с числами в Python

Теперь запустим такой код.

>>> 1.0 + 2 3.0

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

Вычитание

В Python для операции вычитания используется оператор -. Рассмотрим примеры.

>>> 3 - 1 2 >>> 1 - 5 -4 >>> 3.0 - 4.0 -1.0 >>> 3 - 1.0 2.0

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

Умножение

Для умножения в Python применяется оператор * .

>>> 8 * 2 16 >>> 8.0 * 2 16.0 >>> 8.0 * 2.0 16.0

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

Деление

В Python деление выполняется с помощью оператора / .

>>> 3 / 1 3.0 >>> 4 / 2 2.0 >>> 3 / 2 1.5

В отличие от трех предыдущих операций при делении результатом всегда будет число с плавающей точкой. Также нужно помнить о том, что на 0 делить нельзя, иначе Python вернет ошибку ZeroDivisionError . Вот пример такого поведения.

>>> 1 / 0 Traceback (most recent call last): File "", line 1, in ZeroDivisionError: division by zero
Деление без остатка

При обычном делении с использованием оператора / результатом будет точное число с плавающей точкой. Но иногда достаточно получить лишь целую часть операции. Для этого есть операции интегрального деления. Стоит рассмотреть ее на примере.

>>> 2 // 1 2 >>> 4 // 3 1 >>> 5 // 2 2

Результатом такой операции становится частное. Остаток же можно получить с помощью модуля, о котором речь пойдет дальше.

Остаток от деления

Для получения остатка деления двух чисел используется оператор деления по модулю % .

>>> 5 % 2 1 >>> 4 % 2 0 >>> 3 % 2 1 >>> 5 % 3 2

На этих примерах видно, как это работает.

Возведение в степень

Число можно возвести в степень с помощью оператора ** .

>>> 3**2 9 >>> 2**4 16 >>> 3**3 27

Комплексные числа

Комплексные числа — это числа, которые включают мнимую часть. Python поддерживает их «из коробки». Их можно запросто создавать и использовать. Пример:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *