Python определить разрядность числа

Определить количество разрядов числа

Написать функцию, которая определяет количество разрядов введенного целого числа.

Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.

Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».

Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.

Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.

Pascal

 
var num: longint;

function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;

begin
write ('Введите число: ');
readln (num);
if num writeln ('Количество разрядов = ', digits(num));
end.
 

Введите число: -98
Количество разрядов = 2

Язык Си

 
#include < stdio.h>
int digits (int);

main() int num;
scanf("%d",&num);
printf("%d\n", digits(num));
>

int digits(int n) int i;
if (n < 0) n = -n;
while (n > 0) n = n/10;
i += 1;
>
return i;
>

Python

 
def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return i

num = abs(int(input('Введите число: ')))
print('Количество разрядов:', digits(num))
 

Введите число: 65098234
Количество разрядов: 8

КуМир

 
алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
кон

алг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон

Basic-256

 
input num
gosub digits
end

digits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num \ 10
i = i + 1
endwhile
print i
return

Источник

Читайте также:  Php xml удалить узел

Как узнать из скольки цифр состоит число (без перевода в строку )?

Как узнать из скольки цифр состоит число на пример 456 ?
Да можно перевести в строку и там уже узнать с помощью len() и тд..
А как сделать без перевода в строку?

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

HemulGM

Учти, что решение через математику будут медленнее (как ни странно), чем через строку, особенно если число длинное.

LaRN

danila763

с ходу в голову приходит только:
num = 456
counter = 0
while num > 0:
num //= 10
counter += 1
print(counter)

yupiter7575

danila763

yupiter7575

Даниил Шевкунов, Может быть строку данную в условии? Тем более ваше решение не будет работать с отрицательными числами и дробями. А там где будет работать, будет медленно, потому что while

yupiter7575

>>> def getCol(num): . return [i for i, val in enumerate(str(num).replace('.', '').replace('-', ''))][-1] + 1 . >>> getCol(-123) 3 >>> getCol(123) 3 >>> getCol(12.3434) 6

MinTnt

Yupiter7575, это всё равно преобразования числа в строку, и последующее использование уже не числа а строки.

MinTnt

456.12 = 4*10^2 + 5*10^1 + 6*10^0 + 1*10^-1 + 2*10^-2

От этой логики исходя, и искать нужное значение.
Если же число в минус, то использовать модуль, к примеру

yupiter7575

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

MinTnt

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

yupiter7575

MinTnt, Я все равно не понимаю одной вещи, зачем автор вопроса не хочет использовать str? Если он вставит эту функцию куда нибудь в func.py, а потом импортирует, то str он не заметит. Функция будет принимать число и возвращать число.
А если нужно без нагрузки — len(str(num))

MinTnt

Yupiter7575, С этим согласен. Так как после преобразования в строку, её длину по-символьно посчитать проще, да и быстрее чем различные иные попытки циклами.

Но этот вопрос скорее из ряда «Алгоритмы». Т.е. Вопрос скорее в том, какие есть математические алгоритмы, чтоб узнать сколько у него цифр.

fixator10

Мне кажется не стоит, особенно новичкам, советовать выполнять «магические» методы. Для получения значения данного метода существует функция abs() :

yupiter7575

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

a = 1234 a_lenght = len(str(a))

yupiter7575

First_Spectr

yupiter7575

Сергей Шиловский, и? Вам то какое дело? Автор вопроса пришел на тостер, чтобы получить помощь и знания. Я дал автору знание о том как лучше решить эту задачу.

First_Spectr

Yupiter7575, вы не думали что ваш ответ слишком очевиден, чтобы автор о нём не знал, если даже в заголовке вопроса есть жирнющий намёк на это?

yupiter7575

First_Spectr

yupiter7575

Сергей Шиловский, С чем вы хотите спорить? Вопрос написал самоучка, который посмотрел один видос в интернете и начал здесь выпендриваться на тему «Как лучше сделать, если мне так не нравится». Если вам тоже нравится писать говнокод — пожалуйста ваше решение. Я предложил самый оптимальный и удобный вариант, если автору он не подходит — сверху есть еще решения.

Источник

3 способа определить количество разрядов в числе в Python

3 способа определить количество разрядов в числе в Python

Статьи

Введение

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

Длинный способ с циклом while

Дадим пользователю возможность ввести число:

Если было введено отрицательное число, нужно его сделать положительным. Для этого добавим его в модуль методом abs():

n = int(input('Введите число: ')) n = abs(n)

Добавим переменную count равную нулю:

n = int(input('Введите число: ')) n = abs(n) count = 0

Создадим цикл while, который не закончится, пока n > 0. В цикле будем убирать последнюю цифру в переменной n, а к count прибавлять единицу:

n = int(input('Введите число: ')) n = abs(n) count = 0 while n > 0: n //= 10 count += 1

Осталось вывести результат:

n = int(input('Введите число: ')) n = abs(n) count = 0 while n > 0: n //= 10 count += 1 print(count) # Введите число: 164832 # 6

Короткий способ циклом for

Обычно подобным не занимаются при помощи цикла for, но почему бы и нет. Как и в предыдущем способе даём пользователю возможность ввода числа, и добавляем его в модуль. Также создаём переменную count равную нулю:

n = abs(int(input('Введите число: '))) count = 0

Создадим цикл for, в котором пройдёмся по количеству символов в переменной n. Внутри цикла прибавляем к count единицу:

n = abs(int(input('Введите число: '))) count = 0 for i in range(len(str(n))): count += 1

Выведем результат в консоль:

n = abs(int(input('Введите число: '))) count = 0 for i in range(len(str(n))): count += 1 print(count) # Введите число: 111 # 3

Самый быстрый способ

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

n = abs(int(input('Введите число: ')))

Теперь в переменную count сохраним длину значения преобразованного в строковый тип данных в переменной n:

n = abs(int(input('Введите число: '))) count = len(str(n))
n = abs(int(input('Введите число: '))) count = len(str(n)) print(f'В числе находится разрядов.') # Введите число: 17424312 # В числе 17424312 находится 8 разрядов.

Заключение

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

Источник

Определить количество разрядов

Цикл с параметром. Определить количество разрядов числа и вывести на экран
Задание во вложении. Обязательно использовать цикл с параметром(for) Вопросы выкладываются.

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

Проверить как изменится количество разрядов в числе M по сравнению с количеством разрядов числа N
Дано натуральное число N. Определить M=N! Проверить как измениться количевство разрядов в числе M.

Эксперт Python

Лучший ответ

Сообщение было отмечено Надиня как решение

Решение

Определить количество разрядов 2 заданного натурального числа
Помогите решить задачу из раздела Оператор цикла. Определить количество разрядов 2 заданного.

Определить количество чисел состоящих из n десятичных разрядов
Определить количество чисел состоящих из n десятичных разрядов (n – натуральное число, вводится.

Определить количество разрядов в двоичной записи числа.
Дано натуральное число N. Определить количество разрядов в двоичной записи этого числа. Pascal

В каждом числе массива определить количество разрядов, равных 1
В каждом числе массива определить количество разрядов, равных 1 Мальчики, помогите, как это.

Вводится натуральное число. Определить количество разрядов этого числа
Добрый день. Задание звучит так: Вводится натуральное число. Определить количество разрядов.

Источник

Задача — Определить количество разрядов числа — программирование на разных языках

Задача - Определить количество разрядов числа - программирование на разных языках

Задача — Определить количество разрядов числа
— программирование на Pascal, Си, Кумир, Basic-256, Python

Написать функцию, которая определяет количество разрядов введенного целого числа.

Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.

Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».

Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.

Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.

Pascal

function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;

begin
write (‘Введите число: ‘);
readln (num);
if num writeln (‘Количество разрядов = ‘, digits(num));
end. Введите число: -98
Количество разрядов = 2

Язык Си

int digits(int n) int i;
if (n < 0) n = -n;
while (n > 0) n = n/10;
i += 1;
>
return i;
> 3543
4

Python

def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return i

num = abs(int(input(‘Введите число: ‘)))
print(‘Количество разрядов:’, digits(num)) Введите число: 65098234
Количество разрядов: 8

КуМир

алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
кон

алг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон -562
3

Basic-256

input num
gosub digits
end

digits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return -7823342
7

Источник

Оцените статью