Рубрики
Без рубрики

Как преобразовать десятичные числа словами с Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Возможно, это была лучшее представление о том, чтобы назвать эту статью «Как преобразовать поплавки на слова», но с тех пор, как я говорю о валюте, я думал, что используя десятичную, было более точным. Во всяком случае, пару лет назад я писал о том, как преобразовать номера в Python. Основная причина, по которой я пересматриваю эту тему, заключается в том, что я оказался, что мне нужно сделать это снова, и я нашел свой собственный пример довольно не хватает. Он не показывает, как на самом деле использовать его, чтобы преобразовать что-то вроде «10,12» в «десять долларов и двенадцать центов». Поэтому я собираюсь показать вам, как это сделать в этой статье, а затем мы также посмотрим на некоторые из альтернатив, которые мои читатели дали мне.

Вернуться к доске для рисования

Чтобы начать, мы возьмем исходный код и добавим некоторые тесты в конце, чтобы убедиться, что он работает так, как мы хотим. Тогда я покажу вам немного по-другому, чтобы пойти об этом. Наконец, мы посмотрим на два других проекта, которые пытаются сделать такую ​​вещь.

Мы собираемся сосредоточиться на последнем разделе, который проверяет программу. Здесь у нас есть список различных ценностей, которые мы проходим через программу и убедитесь, что он выплесет то, что мы хотим. Обратите внимание, что у нас есть сумма, меньше, чем доллар. Это крайний случай, который я видел, используемый, потому что мой работодатель хочет проверить наш код с реальными суммами, но не хочет, чтобы огромные суммы передали деньги. Вот немного другой способ вывода данных:

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

Пробовать pynum2word

После того, как я разместил свою оригинальную статью, кто-то пришел и рассказал мне о Pictum2Word Project И как я должен был использовать это. Проект Pynum2Word не существовал тогда, но я решил дать ему попробовать на этот раз. К сожалению, этот проект не имеет документации, которую я мог найти. Даже файл readme! С другой стороны, он утверждает, что это может сделать валюту для США, Германии, Великобритании, ЕС и Франции. Я думал, что Германия, Великобритания и Франция были в ЕС, поэтому я не уверен, какой смысл заниматься франками и таким, когда все они используют евро сейчас.

Во всяком случае, в нашем случае мы будем использовать следующий файл, num2word_en.py из их пакета для наших тестов. На самом деле есть тест в нижней части файла, который похож на тот, который я построил. Я на самом деле основывался на их тесте. Давайте попробуем редактировать файл и добавить номер менее одного для своего второго списка, например 0,45 , чтобы увидеть, работает ли это. Вот результат вывода второго списка (я пропускаю выход первого списка для краткости):

0,45 - это нулевая точка четыре пять центов 0,45 - это нулевая точка четыре пять 1 - один цент 1 - один 120 - один доллар и двадцать центов 120 сто двадцать 1000 - десять долларов 1000 - одна тысяча 1120 одиннадцать долларов и двадцать центов 1120 одиннадцать сотен двадцать 1800 - восемнадцать долларов 1800 восемнадцать сотен 1976 год - девятнадцать долларов и семьдесят шесть центов 1976 год - девятнадцать сотен семьдесят шесть 2000 год - двадцать долларов 2000 год - две тысячи 2010 год - двадцать долларов и десять центов 2010 год - две тысячи десяти 2099 - двадцать долларов и девяносто девять центов 2099 - две тысячи девяносто девять 2171 - двадцать один доллар и семьдесят один цент 2171 - двадцать сто семьдесят один

Работает, но не так, как я ожидал. В США, когда мы говорим о валюте, мы бы назвали 0,45 «Сорок пять центов« не «нулевая точка четыре пять центов». Когда я исследую это, я узнал, что люди в некоторых других странах используют последнюю терминологию. То, что я нахожу интересно, так это то, что этот модуль занимает все выше 100 и делит его на доллары и центы. Например, обратите внимание, что 120 переводится на «один доллар и двадцать центов» вместо «сто двадцать долларов». Также обратите внимание, что он говорит «двадцать центов», а не «точка двух нулевых центов». Я не знаю, как объяснить это противоречие. Он делает работу, если вы пройдете это просто целое число, которое меньше 100. Итак, если у вас был пользователь поставлен на всплывающем плавании, вы хотели бы сломать его, как и раньше:

Затем пропустите каждую часть через скрипт, чтобы получить кусочки, а затем поставить их вместе.

Используя номера .py

Еще один из моих читателей по имени Эрик Вальд связался со мной о его Numbers.py Script Отказ Давайте посмотрим, как это держит!

Глядя на код, вы быстро найдете, что он не может обрабатывать поплавки, поэтому нам придется расстаться на наших поплавках и передавать его долларам и центам отдельно. Я попробовал это с несколькими разными числами, и кажется, что они корректируют их правильно. Сценарий даже ставит запятые на Марке тысячи. Он не добавляет «и» слово где угодно, но мне не волнует это прямо сейчас.

Заключение

Все три из этих методов требуют какого-либо обертки, чтобы добавить «доллары» и «центов» (или число/100) слов для них и расстаться на поплавок на две части. Я думаю, что код Эрика очень прост и лучший документальный. Код проекта Pynum2Word также очень хорошо работает и работает довольно хорошо, но нет документации. Решение, которое я нашел давно, также работает, но я нахожу этот код очень уродливым и не очень легко читать. У меня на самом деле нет рекомендации, но я думаю, что мне нравится Эрик лучший. Если вам нужна гибкость выполнения нескольких валют, то проект Pynum2Word стоит выглядеть.