Python составить число из цифр

Сумма цифр трехзначного числа

Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.

В языках программирования почти всегда есть две операции:

1) нахождение целого при делении нацело,

2) нахождение остатка при делении нацело.

В языке программирования Python первая операция обозначается // (двумя знаками деления), а вторая — % (знаком процента). Например:

Примечание. Операции деления нацело и нахождения остатка с точки зрения арифметики применимы только к целым числам. Но в Python их можно использовать и по отношению к дробным числам:

>>> 34.5 % 10 4.5 >>> 34.5 // 10 3.0 >>> 34.5 // 12.9 2.0

Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:

  1. Найти остаток от деления abc на 10, записать его в переменную d1 . Это будет цифра c.
  2. Избавиться от цифры c в числе abc, разделив его нацело на 10.
  3. Найти остаток от деления ab на 10, записать его в переменную d2 . Это будет цифра b.
  4. Избавиться от цифры b в числе ab, разделив его нацело на 10.
  5. Число a однозначное. Это еще одна цифра исходного числа.
  6. Сложить оставшееся число a со значениями переменных d1 и d2 .
n = input("Введите трехзначное число: ") n = int(n) d1 = n % 10 n = n // 10 d2 = n % 10 n = n // 10 print("Сумма цифр числа:", n + d2 + d3)

Пример выполнения программы:

Введите трехзначное число: 742 Сумма цифр числа: 13

Однако, если нам известно, что число состоит из трех разрядов (цифр), есть немного другой способ извлечения цифр из числа:

  1. Остаток от деления на 10 исходного числа дает последнюю цифру числа.
  2. Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
  3. Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
n = input("Введите трехзначное число: ") n = int(n) d1 = n % 10 d2 = n % 100 // 10 d3 = n // 100 print("Сумма цифр числа:", d1 + d2 + d3)

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

n = input("Введите трехзначное число: ") # Извлекается первый[0] символ строки, # преобразуется к целому. # Аналогично второй[1] и третий[2]. a = int(n[0]) b = int(n[1]) c = int(n[2]) print("Сумма цифр числа:", a + b + c)

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

В этом случае надо воспользоваться функциями randint() , randrange() или random() из модуля random . Первым двум функциям передаются диапазоны: randint(100, 999) , randrange(100, 1000) . Получить трехзначное число, используя random() немного сложнее:

# Функция random генерирует # случайное дробное число от 0 до 1 from random import random # При умножении на 900 получается случайное # число от 0 до 899.(9). # Если прибавить 100, то получится # от 100 до 999.(9). n = random() * 900 + 100 # Отбрасывается дробная часть, # число выводится на экран n = int(n) print(n) # Извлекается старший разряд числа # путем деления нацело на 100 a = n // 100 # Деление нацело на 10 удаляет # последнюю цифру числа. # Затем нахождение остатка при # делении на 10 извлекает последнюю цифру, # которая в исходном числе была средней. b = (n // 10) % 10 # Младший разряд числа находится # как остаток при делении нацело на 10. c = n % 10 print(a+b+c)

Источник

Как из цифр в питоне получить число

Дана строка, содержащая натуральные числа и слова. Необходимо сформировать список из чисел, содержащихся в этой строке. Например, задана строка «abc83 cde7 1 b 24». На выходе мы должны получить список [83, 7, 1, 24].

Следует посимвольно перебирать строку. Если очередной символ цифра, надо добавить ее в новую строку. Далее проверять символы за ней, и если они тоже цифры, то добавлять их в конец этой новой подстроки из цифр. Когда очередной символ окажется не цифрой, или будет достигнут конец строки, то надо преобразовать строку из цифр в число и добавить в список.

Обратите внимание, что данное решение извлекает именно числа, а не цифры. Иначе мы бы не получили число 78, а получили отдельно цифру 7 и цифру 8. Задача на извлечение цифр существенно проще.

Если в строке числа всегда отделены от слов пробелами, задача решается проще:

Здесь происходит разделение строки на слова по пробелам. В цикле с помощью метода isnumeric() каждое слово проверяется, является ли оно числом. Подобную задачу можно решить в одну строку, если использовать функцию filter().

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

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

Как взять n-ую цифру числа в питоне

Я хочу взять n-ую цифру из N-значного числа в Python. Например:

Как я могу сделать что-то подобное в Python? Должен ли я сначала изменить его на строку, а затем изменить его на int для расчета?

4 ответа

Сначала обработайте число как строку

Затем, чтобы получить первую цифру:

Это вернет цифру как символ, а не как число. Чтобы преобразовать его обратно используйте:

Хорошо, во-первых, используйте функцию str () в python, чтобы превратить «число» в строку

Затем получите индекс, 0 = 1, 4 = 3 в индексной нотации, используйте int (), чтобы превратить его в число

Если вам нравится в краткой форме

Я бы порекомендовал добавить булевскую проверку для величины числа. Я конвертирую большое значение в миллисекундах в дату и время. У меня есть числа от 2 до 200 000 200, поэтому 0 — это правильный вывод. Функция, которая есть у @Chris Mueller, вернет 0, даже если число меньше 10 ** n.

Вы должны быть осторожны при проверке логического состояния этого возвращаемого значения. Чтобы разрешить 0 в качестве допустимого возвращаемого значения, вы не можете просто использовать if get_digit: . Вы должны использовать if get_digit is False: , чтобы 0 не вел себя как ложное значение.

Вы можете сделать это с помощью целочисленного деления и остатка методов

// выполняет целочисленное деление на степень десяти, чтобы переместить цифру в позицию единиц, затем % получает остаток после деления на 10. Обратите внимание, что при нумерации в этой схеме используется нулевое индексирование и начинается с правой стороны номера.

Объединение элементов списка: из цифр сделать целое число

Есть список gen = [1,2,3,4] Необходимо объединить элементы в число, чтобы получилось 1234 . У меня получилось так:

Нет ли способа проще, без преобразования типов?

Чтобы последовательность цифр в число превратить:

Это близко к коду в вопросе и преобразует все цифры в строки, объединяет их в одну строку, которая преобразуется в целое число. Это уродливый (из-за преобразований туда-сюда: intstr ), но более быстрый способ для тысяч цифр по сравнению с reduce() решением ниже.

Источник

Как разбить число на цифры в Python

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

В Python есть несколько способов решить эту задачу. Разберем их все по порядку.

Как разбить число на цифры при помощи map()

Функция map() принимает в качестве аргументов определенную функцию и итерируемый объект (список, кортеж и т.д. ) и применят эту функцию к каждому элементу объекта.

Давайте рассмотрим следующее выражение:

mapObject = map(int, string_num)
  • string_num – список
  • int – функция, которая преобразует каждый элемент списка в целое число
  • mapObject – переменная, в которую сохранен объект функции map() ;

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

giveNumber = 987654321 string_num = str(giveNumber) mapObject = map(int, string_num) separate_digit_list = list(mapObject) print(separate_digit_list) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1]
  • Сначала преобразуем наше число в строку при помощи встроенной функции str() , чтобы передать его в функцию map() в качестве итерируемого объекта
  • Функция map() применяет функцию int() к каждому элементу строки
  • Функция list() преобразует объект функции map() в искомый список отдельных цифр, из которых состоит наше число.

Как разбить число на цифры при помощи цикла for

number = 987654321 for n in str(number): # print(type(n)) # Если раскомментировать, эта строка будет выводить print(int(n)) # Преобразуем символ строки обратно в число

Объяснение. Нам дано число 987654321. Для перебора цифр, составляющих это число, его надо преобразовать в строку (итерируемый объект). Тип каждого элемента мы можем выводить в консоль при помощи выражения print(type(n)) .

Некоторые могут задаться вопросом: а что если перебрать непосредственно само число, не преобразуя его в строку? Мы можем попробовать это сделать в следующем примере:

number = 987654321 for n in number: print(int(n)) # Результат: # TypeError: int object is not iterable

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

Как разделить число на цифры при помощи генератора списка

Генераторы списков (list comprehension) в Python предоставляют мощный функционал для написания результативного кода в одну строчку.

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

givenNumber = 987654321 charterList = [receivedDigit for receivedDigit in str(givenNumber)] print(charterList) # Результат: # ['9', '8', '7', '6', '5', '4', '3', '2', '1']
  • Сохраняем наше число как строку
  • Генератор списка разбивает строку на отдельные цифры
  • Сохраняем полученный список в переменную charterList и выводим его на печать

В результате мы получили список символов (типа str), а не чисел, как хотели бы, верно? Чтобы это исправить, нужно просто добавить функцию int() в наш генератор списка:

givenNumber = 987654321 charterList = [int(receivedDigit) for receivedDigit in str(givenNumber)] print(charterList) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1]

Здесь int(receivedDigit) преобразует каждый символ в число (типа int), а полученный результат становится списком целых чисел, как нам и хотелось. Таким образом мы можем разбить на цифры двузначное, трехзначное, четырехзначное число и так далее.

Как разделить число на цифры при помощи цикла for и функции list()

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

number = 987654321 result = [] for n in str(number): result.append(int(n)) print(result) # Результат: # [9, 8, 7, 6, 5, 4, 3, 2, 1]
  • Перед началом цикла создаем пустой список result = []
  • Для преобразования каждого элемента из строкового типа в целочисленный используем функцию int()
  • Добавляем полученное целочисленное значение в наш список в переменной result

1 комментарий к “Как разбить число на цифры в Python”

Источник

Читайте также:  Шрифты в CSS3
Оцените статью