На чтение 3 мин Просмотров 677 Опубликовано 02.03.2023
Содержание
- Введение
- Длинный способ с циклом while
- Короткий способ циклом for
- Самый быстрый способ
- Заключение
Введение
В ходе статьи рассмотрим три вариации кода для определения количества разрядов в ведённом пользователем числе на языке программирования Python.
Длинный способ с циклом while
Дадим пользователю возможность ввести число:
n = int(input('Введите число: '))
Если было введено отрицательное число, нужно его сделать положительным. Для этого добавим его в модуль методом 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'В числе {n} находится {count} разрядов.')
# Введите число: 17424312
# В числе 17424312 находится 8 разрядов.
Заключение
В ходе статьи мы с Вами разобрали целых 3 способа определить количество разрядов в числе в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Есть число 1234567
.
Как разбить пробелами число по разрядам, чтобы получилось 1 234 567
?
insolor
45.7k15 золотых знаков54 серебряных знака95 бронзовых знаков
задан 18 июл 2016 в 8:17
x = 1234567
'{0:,}'.format(x).replace(',', ' ')
>>> '1 234 567'
ответ дан 18 июл 2016 в 8:24
slippykslippyk
6,1013 золотых знака19 серебряных знаков38 бронзовых знаков
2
Если хочется сгруппировать тысячи в числе в соответствии с текущей локалью пользователя:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'ru_RU.UTF-8'
>>> print(locale.format('%d', 1234567, grouping=True))
1 234 567
В другой локали, разделитель может быть другим:
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> print(locale.format('%d', 1234567, grouping=True))
1,234,567
Имена локалей и доступная функциональность могут зависеть от системы.
ответ дан 20 июл 2016 в 17:40
jfsjfs
51.8k11 золотых знаков107 серебряных знаков306 бронзовых знаков
так можно любую маску сделать по количеству разрядов
import re
def numberjump_filter(string):
string=str(string)
#s = re.match("(d{0,})(d{3})(d{4})",string)
s = re.match("(.*)(ddd)(dddd)",string)
return s[1]+" "+s[2]+" "+s[3]
ответ дан 4 фев 2019 в 10:25
blstblst
394 бронзовых знака
Ещё вариант для разнообразия:
n = str(1234567)[::-1]
print(' '.join(n[i:i+3] for i in range(0, len(n), 3))[::-1])
- делаем из числа строку
- переворачиваем её
- отрезаем по три символа
- объединяем их через пробелы
- ещё раз переворачиваем то, что получилось
Вывод:
1 234 567
ответ дан 19 окт 2021 в 13:28
CrazyElfCrazyElf
65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков
Разбиваем на разряды, при этом используем f-string:
x = 1234567890
print(f"{x:_} руб.".replace("_", " "))
Разумеется, надо учитывать, будут ли в тексте ещё символы _
, которые могут быть заменены на пробелы. В этом случае лучше вынести f-string в отдельную переменную и использовать её в коде.
x = 1234567890
fstring = f"{x:_} руб.".replace("_", " ")
print(f"Итого: {fstring} n Напишите сумму прописью: ________________")
ответ дан 26 июн 2022 в 18:54
GrantGrant
212 бронзовых знака
2
num = int(input("Please give me a number: "))
print(num)
thou = int((num // 1000))
print(thou)
hun = int((num // 100))
print(hun)
ten =int((num // 10))
print(ten)
one = int((num // 1))
print(one)
I tried this but it does not work and I’m stuck.
asked Sep 24, 2015 at 3:18
4
You might want to try something like following:
def get_pos_nums(num):
pos_nums = []
while num != 0:
pos_nums.append(num % 10)
num = num // 10
return pos_nums
And call this method as following.
>>> get_pos_nums(9876)
[6, 7, 8, 9]
The 0th
index will contain the units, 1st
index will contain tens, 2nd
index will contain hundreds and so on…
This function will fail with negative numbers. I leave the handling of negative numbers for you to figure out as an exercise.
answered Jun 28, 2018 at 0:28
Aaron SAaron S
4,9034 gold badges29 silver badges29 bronze badges
Like this?
a = str(input('Please give me a number: '))
for i in a[::-1]:
print(i)
Demo:
Please give me a number: 1324
4
2
3
1
So the first number is ones, next is tens, etc.
answered Sep 24, 2015 at 3:24
Remi GuanRemi Guan
21.3k17 gold badges63 silver badges87 bronze badges
1
num = 1234
thousands = num // 1000
hundreds = (num % 1000) // 100
tens = (num % 100) // 10
units = (num % 10)
print(thousands, hundreds, tens, units)
# expected output: 1 2 3 4
“//” in Python stands for integer division. It largely removes the fractional part from the floating-point number and returns an integer
For example:
4/3 = 1.333333
4//3 = 1
answered Jun 8, 2021 at 2:19
You could try splitting the number using this function:
def get_place_values(n):
return [int(value) * 10**place for place, value in enumerate(str(n)[::-1])]
For example:
get_place_values(342)
>>> [2, 40, 300]
Next, you could write a helper function:
def get_place_val_to_word(n):
n_str = str(n)
num_to_word = {
"0": "ones",
"1": "tens",
"2": "hundreds",
"3": "thousands"
}
return f"{n_str[0]} {num_to_word[str(n_str.count('0'))]}"
Then you can combine the two like so:
def print_place_values(n):
for value in get_place_values(n):
print(get_place_val_to_word(value))
For example:
num = int(input("Please give me a number: "))
# User enters 342
print_place_values(num)
>>> 2 ones
4 tens
3 hundreds
answered Jun 29, 2021 at 2:19
imakappaimakappa
1462 silver badges4 bronze badges
num=1234
digit_at_one_place=num%10
print(digit_at_one_place)
digits_at_tens_place=(num//10)%10
digits_at_hund_place=(num//100)%10
digits_at_thou_place=(num//1000)%10
print(digits_at_tens_place)
print(digits_at_hund_place)
print(digits_at_thou_place)
this does the job. it is simple to understand as well.
answered Nov 26, 2021 at 5:21
Please note that I took inspiration from the above answer by 6pack kid to get this code. All I added was a way to get the exact place value instead of just getting the digits segregated.
num = int(input("Enter Number: "))
c = 1
pos_nums = []
while num != 0:
z = num % 10
pos_nums.append(z *c)
num = num // 10
c = c*10
print(pos_nums)
Once you run this code, for the input of 12345 this is what will be the output:
Enter Number: 12345
[5, 40, 300, 2000, 10000]
This helped me in getting an answer to what I needed.
answered Aug 12, 2019 at 10:10
money = int(input("Enter amount: "))
thousand = int(money // 1000)
five_hundred = int(money % 1000 / 500)
two_hundred = int(money % 1000 % 500 / 200)
one_hundred = int(money % 1000 % 500 % 200 / 100)
fifty = int(money % 1000 % 500 % 200 % 100 / 50)
twenty = int(money % 1000 % 500 % 200 % 100 % 50 / 20)
ten = int(money % 1000 % 500 % 200 % 100 % 50 % 20 / 10)
five = int(money % 1000 % 500 % 200 % 100 % 50 % 20 % 10 / 5)
one = int(money % 1000 % 500 % 200 % 100 % 50 % 20 % 10 % 5 / 1)
if thousand >=1:
print ("P1000: " , thousand)
if five_hundred >= 1:
print ("P500: " , five_hundred)
if two_hundred >= 1:
print ("P200: " , two_hundred)
if one_hundred >= 1:
print ("P100: " , one_hundred)
if fifty >= 1:
print ("P50: " , fifty)
if twenty >= 1:
print ("P20: " , twenty)
if ten >= 1:
print ("P10: " , ten)
if five >= 1:
print ("P5: " , five)
if one >= 1:
print ("P1: " , one)
answered Feb 2, 2020 at 14:53
Quickest way:
num = str(input("Please give me a number: "))
print([int(i) for i in num[::-1]])
answered Jun 29, 2021 at 11:45
PCMPCM
2,8212 gold badges8 silver badges30 bronze badges
This will do it, doesn’t use strings at all and handles any integer passed for col
sensibly.
def tenscol(num: int, col: int):
ndigits = 1
while (num % (10**ndigits)) != num:
ndigits += 1
x = min(max(1, col), ndigits)
y = 10**max(0, x - 1)
return int(((num % 10**x) - (num % y)) / y)
usage:
print(tenscol(9785,-1))
print(tenscol(9785,1))
print(tenscol(9785,2))
print(tenscol(9785,3))
print(tenscol(9785,4))
print(tenscol(9785,99))
Output:
5
5
8
7
9
9
answered Nov 6, 2021 at 21:56
ChrisChris
2,1381 gold badge24 silver badges36 bronze badges
def get_pos(num,unit):
return int(abs(num)/unit)%10
So for “ones” unit is 1 while for “tens”, unit is 10 and so forth.
It can handle any digit and even negative numbers effectively.
So given the number 256, to get the digit in the tens position you do
get_pos(256,10)
>> 5
answered Nov 12, 2021 at 22:04
I had to do this on many values of an array, and it’s not always in base 10 (normal counting – your tens, hundreds, thousands, etc.). So the reference is slightly different: 1=1st place (1s), 2=2nd place (10s), 3=3rd place (100s), 4=4th place (1000s). So your vectorized solution:
import numpy as np
def get_place(array, place):
return (array/10**(place-1)%10).astype(int)
Works fast and also works on arrays in different bases.
answered Apr 7, 2022 at 20:15
MattMatt
2,55212 silver badges36 bronze badges
# method 1
num = 1234
while num>0:
print(num%10)
num//=10
# method 2
num = 1234
print('Ones Place',num%10)
print('tens place',(num//10)%10)
print("hundred's place",(num//100)%10)
print("Thousand's place ",(num//1000)%10)
answered Dec 2, 2022 at 13:57
1
In Python, you can try this method to print any position of a number.
For example, if you want to print the 10 the position of a number,
Multiply the number position by 10, it will be 100,
Take modulo of the input by 100 and then divide it by 10.
Note: If the position get increased then the number of zeros in modulo and in divide also increases:
input = 1234
print(int(input % 100) / 10 )
Output:
3
Tomerikoo
18.1k16 gold badges45 silver badges60 bronze badges
answered Apr 26, 2021 at 16:50
1
So I saw what another users answer was and I tried it out and it didn’t quite work, Here’s what I did to fix the problem. By the way I used this to find the tenth place of a number
# Getting an input from the user
input = int(input())
# Finding the tenth place of the number
print(int(input % 100) // 10)
answered Jun 28, 2021 at 20:38
Перейти к содержанию
Определить количество разрядов числа
Просмотров 12.9к. Обновлено 15 октября 2021
Написать функцию, которая определяет количество разрядов введенного целого числа.
Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 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<0 then num:=abs(num);
writeln ('Количество разрядов = ', digits(num));
end.
Введите число: -98
Количество разрядов = 2
Язык Си
#include < stdio.h>
int digits (int);main() {
int num;
scanf("%d",&num);
printf("%dn", digits(num));
}int digits(int n) {
int i;
if (n < 0) n = -n;
while (n > 0) {
n = n/10;
i += 1;
}
return i;
}
3543
4
Python
количество разрядов в числе Python
def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return inum = 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
enddigits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return
-7823342
7
-36 / 0 / 0 Регистрация: 26.02.2020 Сообщений: 109 |
|
1 |
|
Определить количество разрядов24.04.2020, 12:38. Показов 17743. Ответов 1
63. Определить количество разрядов
0 |
Fudthhh Модератор 2860 / 1563 / 508 Регистрация: 21.02.2017 Сообщений: 4,181 Записей в блоге: 1 |
||||
24.04.2020, 12:41 |
2 |
|||
Сообщение было отмечено Надиня как решение Решение
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
24.04.2020, 12:41 |
Помогаю со студенческими работами здесь В каждом числе массива определить количество разрядов, равных 1 Мальчики, помогите, как это… Определить количество разрядов, которые различаются в записи двух двоичных чисел Дано натуральное число N. Определить M=N!. Проверить, как изменилось количество разрядов в числе M Найти количество комбинаций, в которых сумма квадратов разрядов минут равна сумме квадратов разрядов секунд Определить разрядность целого числа, использовать битовый сдвиг вправо.Подсчитать количество единичных разрядов, В каждом числе массива определить количество разрядов, равных “1” Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 2 |