Как разбить число на цифры python
Перейти к содержимому

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

  • автор:

Как разделить число на цифры в Python без списков и всего такого. Нужно использовать % или //.

num % 10 — получаешь самую правую цифру числа num
num = num // 10 — удаляешь самую правую цифру из числа num.

Повторяешь в цикле — пока num не станет равным нулю.

Flame MasterЗнаток (391) 5 лет назад
Ратанин АрсенийПрофи (538) 3 года назад

СПАСИБО.
Благодаря Вам написал код :
n = int(input())
if n%10==1 and n//10%10!=1:
print(n, «программист»)
elif n//10%10!=1 and (n%10==2 or n%10==3 or n%10==4):
print(n, «программиста»)
else:
print(n, «программистов»)

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

Для того, чтобы это звучало правильно, для каждого nn нужно использовать верное окончание слова.

Напишите программу, считывающую с пользовательского ввода целое число nn (неотрицательное), выводящее это число в консоль вместе с правильным образом изменён
Вы — топ)

Андрей Высший разум (405331) ИМХО, твой код усложнён лишними проверками. Если сделать 4 ветки, код станет намного понятнее: if n // 10 % 10 == 1: print(n, «программистов») elif n % 10 == 1: print(n, «программист») elif 2
КахаЗнаток (423) 2 года назад
числа будут в обратном порядке, а как вывести в нужном без list?

Андрей Высший разум (405331) Каха, Например, через рекурсивную функцию: def dig(n): ~~if n >= 10: dig(n // 10) ~~print(n % 10)

Остальные ответы

print(37 / 3) # один слэш — это деление с ответом-дробью
print(37 // 3) # два слэша считают частное от деления нацело
# это как операция div в других языках
print(37 % 3) # процент считает остаток от деления нацело
# это как операция mod в других языках

Flame MasterЗнаток (391) 5 лет назад
Я знаю это! Я не знаю как с помощью этого разделить число на цифры.

Представить число как строку и пользоваться срезами:
a = 543
a = str(a)
print(a[0]) # >>> ‘5’
print(a[1]) # >>> ‘4’
print(a[2]) # >>> ‘3’

Если нужно только вывести числа на экран, то так
n=int(input())
while n>0:
print(n%10)
n//=10
Числа выводятся в порядке справа налево. 2 последние строки с отступом.

Разбить число на цифры

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

Вот, на любое целое или дробное, отрицательное или неотрицательное число
// Разбиение числа на цифры

#include #include using std::cout; using std::cin; using std::endl; using std::ends; using std::string; bool check4(string x) // проверка на пропущенный ноль в начале дробного числа < if ((static_cast(x[0]) == 44) // если знак "," первый, ИЛИ || (static_cast(x[0]) == 46) // если знак "." первый, ИЛИ || ((static_cast(x[0]) == 43 || static_cast(x[0]) == 45) // если "+" ИЛИ "-" первый знак, И && (static_cast(x[1]) == 44) || (static_cast(x[1]) == 46))) // "." ИЛИ "," второй знак < return true; // если обнаружена точка-запятая без предшествующей цифры, то истина, что ноль пропущен. >else return false; > bool check3(string x) // проверка количества точек-запятых в дробном числе < unsigned int count = 0; for (int i = 0; x[i]; i++) < if (static_cast(x[i]) == 44 // знак "," || static_cast(x[i]) == 46) // знак "." < count++; >> if (count > 1) // если в числе больше одной точки-запятой, то ошибка return false; else return true; > bool check2(string x) // Проверка корректности остальных знаков < for (int i = 1; x[i]; i++) if (!(static_cast(x[i]) == 44 // знак "," || static_cast(x[i]) == 46 // знак "." || (static_cast(x[i]) >= 48 // цифры && static_cast(x[i]) return true; > bool check1(string x) // Проверка корректности первого знака < if ((static_cast(x[0]) >= 43 // знаки "+" "-" "." "," && static_cast(x[0]) <= 46) || (static_cast(x[0]) >= 48 // цифры && static_cast(x[0]) else return false; // если обнаружен знак - не цифра, не плюс-минус и не точка-запятая, то ошибка > void frag(string x) < cout << "Ваше число состоит из цифр: "; if(check4(x)) // проверка на пропущенный ноль перед дробью cout << "0" << ends; // если пропущен, печатаем ноль for (int i = 0; x[i]; i++) < if (static_cast(x[i]) >= 48 // печатаем только цифры && static_cast(x[i]) > > int main() < setlocale(LC_CTYPE, ".1251"); string x; while (true) < cout > 

Slonopotam, ты решал задачу, исходя из некорректно понятого условия. Изначально было написано: Помогите разбить 3 значное число на цифры. Число! Т.е. предполагается, что число существует уже в виде экземпляра числового типа (int, double и родственные типы), а не в виде строки символов.

(1) Не стоит хардкодить коды цифр и знаков. Например:

= 48 // цифры && static_cast(x[0])  

в другой кодовой таблице этим кодам могут соответствовать совсем другие символы. Более переносимый вариант:

= '0' && x[0]  

(Полностью переносимый вариант — это сравнение с каждой из цифр в отдельности, поскольку теоретически возможны кодовые таблицы, в которых цифры не идут единым блоком. Но я с такой экзотикой не встречался. А вот с буквами национальных алфавитов такое встречается очень часто.)

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

(3) В программе не учитывается возможность ввода чисел в «научной» форме. Например, .758e2 — это 75.8 . Подробности см. в википедии.

Так что в плане универсальности твоего решения ты немного погорячился.

Но попытка засчитывается. +1 к карме ))

Как разделить число на цифры в python?

Здравствуйте! Кто-нибудь может подсказать, как можно сделать так, чтобы, допустим, в числе 135 сложить крайние цифры т.е. 1 и 5?

  • Вопрос задан более трёх лет назад
  • 1563 просмотра

5 комментариев

Простой 5 комментариев

Да проще простого брат:

digits = [] integer = 135 while integer: digits.append(integer % 10) integer /= 10 result = digits[0] + digits[-1]

Можно, конечно, через строку всё это сделать, но препод "неуд" поставит за такое.

Как целое число разбить на отдельные цифры, и вывести их через запятую?

возможно как то через цикл for() и дальше записать в список и вывести его через split с запятой, но это будет много кода, как можно реализовать покороче?

Отслеживать
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 3 дек 2020 в 10:08
833 1 1 золотой знак 10 10 серебряных знаков 31 31 бронзовый знак

3 ответа 3

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

Если надо просто вывести, то, используя ответ @S. Nick:

a = 987 print(*str(a), sep=',') # /\ Разделитель между элементами # /\ Приведение числа к строке # /\ Распаковка строки в отдельные символы 

Если же строку '9,8,7' надо куда-то сохранить, то:

a = 987 result = ','.join(str(a)) # /\ Приводим число к строке # /\ Перебираем каждый символ строки # /\ Объединяем через запятую 

Результат, при необходимости, тоже можно вывести

print(result) 

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

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