Выводите только один ноль из ведущих нулей в python

#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