#python #leading-zero
#python #ведущий ноль
Вопрос:
У меня есть следующая задача: взять число из входных данных, расширить его до 12 цифр, а затем напечатать миллиарды, миллионы, тысячи, сотни и единицы измерения. Я разделил число на соответствующие части в виде строки. Следующий код:
num = input("Please enter a number: ")
num = str(num)
zero = num.zfill(12)
billion = zero[0:3]
million = zero[3:6]
thousand = zero[6:9]
hundred = zero[9:10]
unit = zero[10:]
Предположим, число равно 63380.
Ожидаемый результат
0 billion 0 million 63 thousand 3 hundred and 80
Но я получаю
000 billion 000 million 063 thousand 3 hundred and 80
Комментарии:
1. Является ли вопрос домашнего задания напечатать число словами или напечатать число с одним ведущим нулем, как следует из заголовка?
2. … и если это вопрос домашнего задания, можете ли вы показать нам, какие усилия вы уже приложили, прежде чем публиковать здесь?
3. Вы можете преобразовать свою
000
строку обратно вint
:int(billion)
4. @TimBiegeleisen Да, это вопрос домашнего задания. Вопрос заключался в том, чтобы распечатать пользовательский ввод в сегменты измерения: миллиард, миллион, тысяча, сто и единицы. Я пробовал приведенные выше коды, и вот как далеко я мог зайти.
5. @stolenmoment вывод должен содержать только один ноль, если для этого сегмента измерения нет чисел. Например, пользовательский ввод равен 1999, тогда я должен распечатать 0 миллиардов, 0 миллионов, 1 тысячу, 9 сотен и 99. Надеюсь, я смог объяснить.
Ответ №1:
вы можете преобразовать свою zero
строку int()
примерно так
num = input("Please enter a number: ")
num = str(num)
zero = num.zfill(12)
billion = int(zero[0:3])
million = int(zero[3:6])
thousand = int(zero[6:9])
hundred = int(zero[9:10])
unit = int(zero[10:])
print(billion ,'billion', million ,'million', thousand , 'thousand' , hundred , 'hundred and' , unit)
преобразование в int делает это.
3.7
to 3
'3'
to 3
и 000000000003
to 3
и 00000
to 0
.
он удаляет много нулей перед числами и преобразует строку в int.
и преобразуйте (like 3.7
) в int(to 3
), отбросив его.
Комментарии:
1. Это сработало. Но не могли бы вы объяснить, почему я должен преобразовать его в целое число?
2. Понятно. Большое вам спасибо.
3. Я рад, что это помогло вам
Ответ №2:
Вы можете использовать словарь для управления десятичными дробями.
num = 63380
dict = {
9:'billion',
6:'million',
3:'thousand',
2:'hundred',
0:' '
}
for key, item in dict.items():
n=num//10**key
print(n,item,end =' ')
num-=n*10**key
Вывод:
0 billion 0 million 63 thousand 3 hundred 80