- Определить количество разрядов числа
- Pascal
- Язык Си
- Python
- КуМир
- Basic-256
- Как узнать из скольки цифр состоит число (без перевода в строку )?
- 3 способа определить количество разрядов в числе в Python
- Введение
- Длинный способ с циклом while
- Короткий способ циклом for
- Самый быстрый способ
- Заключение
- Определить количество разрядов
- Решение
- Задача — Определить количество разрядов числа — программирование на разных языках
- Задача — Определить количество разрядов числа — программирование на Pascal, Си, Кумир, Basic-256, Python
- Pascal
- Язык Си
- Python
- КуМир
- Basic-256
Определить количество разрядов числа
Написать функцию, которая определяет количество разрядов введенного целого числа.
Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 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
Как узнать из скольки цифр состоит число (без перевода в строку )?
Как узнать из скольки цифр состоит число на пример 456 ?
Да можно перевести в строку и там уже узнать с помощью len() и тд..
А как сделать без перевода в строку?
Простой 1 комментарий
Учти, что решение через математику будут медленнее (как ни странно), чем через строку, особенно если число длинное.
с ходу в голову приходит только:
num = 456
counter = 0
while num > 0:
num //= 10
counter += 1
print(counter)
Даниил Шевкунов, Может быть строку данную в условии? Тем более ваше решение не будет работать с отрицательными числами и дробями. А там где будет работать, будет медленно, потому что while
>>> 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
Yupiter7575, это всё равно преобразования числа в строку, и последующее использование уже не числа а строки.
456.12 = 4*10^2 + 5*10^1 + 6*10^0 + 1*10^-1 + 2*10^-2
От этой логики исходя, и искать нужное значение.
Если же число в минус, то использовать модуль, к примеру
MinTnt, Если говорить по факту, то моя функция выполняет все требования и исходное число в строку не преобразует. Да в цикле есть функция str, но она просто представляет введенное число в строку для цикла, и не изменяет тип какой либо переменной
Есть факт использования str(), далее через enumerate мы просто проходим по строке как по списку, делая дополнительно нумерацию, и выбирая последний элемент.
Но опять же, это преобразование в строку, что нарушает условие вопроса. Да и при этом, раз уже преобразовали в строку, использование цикла лишь делает лишнюю нагрузку.
MinTnt, Я все равно не понимаю одной вещи, зачем автор вопроса не хочет использовать str? Если он вставит эту функцию куда нибудь в func.py, а потом импортирует, то str он не заметит. Функция будет принимать число и возвращать число.
А если нужно без нагрузки — len(str(num))
Yupiter7575, С этим согласен. Так как после преобразования в строку, её длину по-символьно посчитать проще, да и быстрее чем различные иные попытки циклами.
Но этот вопрос скорее из ряда «Алгоритмы». Т.е. Вопрос скорее в том, какие есть математические алгоритмы, чтоб узнать сколько у него цифр.
Мне кажется не стоит, особенно новичкам, советовать выполнять «магические» методы. Для получения значения данного метода существует функция abs() :
Ну правда, вопрос из категории дебильных. В пайтоне дин. типизация, и вам еще лень переводить число в строку?
a = 1234 a_lenght = len(str(a))
Сергей Шиловский, и? Вам то какое дело? Автор вопроса пришел на тостер, чтобы получить помощь и знания. Я дал автору знание о том как лучше решить эту задачу.
Yupiter7575, вы не думали что ваш ответ слишком очевиден, чтобы автор о нём не знал, если даже в заголовке вопроса есть жирнющий намёк на это?
Сергей Шиловский, С чем вы хотите спорить? Вопрос написал самоучка, который посмотрел один видос в интернете и начал здесь выпендриваться на тему «Как лучше сделать, если мне так не нравится». Если вам тоже нравится писать говнокод — пожалуйста ваше решение. Я предложил самый оптимальный и удобный вариант, если автору он не подходит — сверху есть еще решения.
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.
Сообщение было отмечено Надиня как решение
Решение
Определить количество разрядов 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