前几天无意中看到了一篇文章列了很多数字的英文表达方式(http://blog.csdn.net/sun7545526/article/details/8122416),正好这段时间在学习python,所以写了个简单的程序用来将数字翻译成英文的表达方式,例如输入123,返回 one hundred and twenty-three
,目前该程序可以表示的范围为0-999,999,999,999.由于本人是个python新手,所以如果用的不完善的地方,还请帮忙改正
'''
convert number to string, number range is 0-999,999,999,999 and must be integer
Created on 2012-10-31
@author: Eric
'''
import locale;
NUMBER_CONSTANT = {0:"zero ", 1:"one", 2:"two", 3:"three", 4:"four", 5:"five", 6:"six", 7:"seven",
8:"eight", 9:"nine", 10:"ten", 11:"eleven", 12:"twelve", 13:"thirteen",
14:"fourteen", 15:"fifteen", 16:"sixteen", 17:"seventeen", 18:"eighteen", 19:"nineteen" };
IN_HUNDRED_CONSTANT = {2:"twenty", 3:"thirty", 4:"forty", 5:"fifty", 6:"sixty", 7:"seventy", 8:"eighty", 9:"ninety"}
BASE_CONSTANT = {0:" ", 1:"hundred", 2:"thousand", 3:"million", 4:"billion"};
#supported number range is 1-n billion;
def translateNumberToEnglish(number):
if str(number).isnumeric():
if str(number)[0] == '0' and len(str(number)) > 1:
return translateNumberToEnglish(int(number[1:]));
if int(number) < 20:
return NUMBER_CONSTANT[int(number)];
elif int(number) < 100:
if str(number)[1] == '0':
return IN_HUNDRED_CONSTANT[int(str(number)[0])];
else:
return IN_HUNDRED_CONSTANT[int(str(number)[0])] + "-" + NUMBER_CONSTANT[int(str(number)[1])];
else:
locale.setlocale(locale.LC_ALL, "English_United States.1252");
strNumber = locale.format("%d" , number, grouping=True);
numberArray = str(strNumber).split(",");
stringResult = "";
groupCount = len(numberArray) + 1;
for groupNumber in numberArray:
if groupCount > 1 and groupNumber[0:] != "000":
stringResult += str(getUnderThreeNumberString(str(groupNumber))) + " ";
else:
break;
groupCount -= 1;
if groupCount > 1:
stringResult += BASE_CONSTANT[groupCount] + ",";
endPoint = len(stringResult) - len(" hundred,");
#return stringResult[0:endPoint];
return stringResult;
else:
print("please input a number!");
#between 0-999
def getUnderThreeNumberString(number):
if str(number).isnumeric() and len(number) < 4:
if len(number) < 3:
return translateNumberToEnglish(int(number));
elif len(number) == 3 and number[0:] == "000":
return " ";
elif len(number) == 3 and number[1:] == "00":
return NUMBER_CONSTANT[int(number[0])] + " " + BASE_CONSTANT[1];
else:
return NUMBER_CONSTANT[int(number[0])] + " " + BASE_CONSTANT[1] + " and " + translateNumberToEnglish((number[1:]));
else:
print("number must below 1000");
def testTranslateNumberToEnglish():
print("0: " + translateNumberToEnglish(0));
print("9: " + translateNumberToEnglish(9));
print("33: " + translateNumberToEnglish(33));
print("40: " + translateNumberToEnglish(40));
print("100: " + translateNumberToEnglish(100));
print("103: " + translateNumberToEnglish(103));
print("123: " + translateNumberToEnglish(123));
print("1,121,912 " + translateNumberToEnglish(1121912));
print("211,121,900 " + translateNumberToEnglish(211121900));
print("11,000,000 " + translateNumberToEnglish(11000000));
print("1,111,121,912 " + translateNumberToEnglish(111121912));
print("2,211,121,900 " + translateNumberToEnglish(2211121900));
print("1,111,000,000 " + translateNumberToEnglish(1111000000));
if __name__ == '__main__':
testTranslateNumberToEnglish();
输出的结果为:
0: zero
9: nine
33: thirty-three
40: forty
100: one hundred
103: one hundred and three
123: one hundred and twenty-three
1,121,912 one million,one hundred and twenty-one thousand,nine hundred and twelve
211,121,900 two hundred and eleven million,one hundred and twenty-one thousand,nine hundred
11,000,000 eleven million,
1,111,121,912 one hundred and eleven million,one hundred and twenty-one thousand,nine hundred and twelve
2,211,121,900 two billion,two hundred and eleven million,one hundred and twenty-one thousand,nine hundred
1,111,000,000 one billion,one hundred and eleven million,
分享到:
相关推荐
从零开始学Python:第一个Python程序.docx从零开始学Python:第一个Python程序.docx从零开始学Python:第一个Python程序.docx从零开始学Python:第一个Python程序.docx从零开始学Python:第一个Python程序.docx从零...
周末在家,写了个小程序,用于将阿拉伯数字转换化大写中文。程序没经过任何优化,出没经过详细的测试,挂到网上,方便将来有需要的时候直接拿来用。 #!/usr/bin/python #-*- encoding: utf-8 -*- import types ...
将阿拉伯数字转换为大写数字,主要解决小数点问题,
在本任务中,我们将先学习Python变量、字符串、列表、字典、集合等的使用方法,并穿插相应的案例及分析过程,实行理论讲解和案例分析相结合的方式。 任务 NBA球星信息查询 任务知识点 Python数字和运算符 Python数字...
“开始Python:使用Python 2.6和Python 3.1引入了这种开源的、可移植的、解释的、面向对象的编程语言,它结合了强大的功能和清晰的语法。本书通过讲授基础知识,使您能够快速创建健壮、可靠和可重用的Python应用程序...
可爱的 Python:将 XML 和 Python结合起来
将数字转化成时间格式 from dateutil.parser import parse a=20170825 b=str(a) c=parse(b) print(c) 2017-08-25 00:00:00 将时间按照天排列,转化为一个数字,用来做时间序列分析 from matplotlib.pylab ...
简单的 小程序,可以实现数字何英文的转换,简单的 小程序,可以实现数字何英文的转换,
实例:将字符串"123"转换为整型数字,语法为int("123"),结果为123。 2. float()函数 float() 函数用于将整数和字符串转换成浮点数。 语法:float([x]) 说明:其中,x是需要转换的字符串或整数。 实例:将数字123...
python读取Excel表格的文件,并且把中文转换成英文,然后首字母大写并拼接成@Anqing|安庆|36这种格式,写入txt文件中
Python语言:程序设计课程教学改革的理想选择.pdf Python语言:程序设计课程教学改革的理想选择.pdf Python语言:程序设计课程教学改革的理想选择.pdf Python语言:程序设计课程教学改革的理想选择.pdf Python...
Python-将epub文件转换为文本
PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)
现在编写一个程序,建立机器学习算法模型,使用手写数字识别数据集对模型进行训练并进行超参数寻优。训练结束后,使用模型对图片进行识别,得到识别结果,将识别结果与真实结果进行对比,观察识别的正确率。 步骤:...
Python 数字大小写转换程序 Python源码Python 数字大小写转换程序 Python源码Python 数字大小写转换程序 Python源码Python 数字大小写转换程序 Python源码Python 数字大小写转换程序 Python源码Python 数字大小写...
一个小的python程序,实现添加数字的功能
内容简介:使用python 将excel表格转换为图表,使用GUI界面进行操作,可转换成html网页文件,也可以在html页面保存表格为图片。 此代码文件内,包括了exe执行文件以及源码,可以在任何电脑上执行此exe文件,不需要...
案例 燃烧卡路里 任务背景 卡路里,简称卡,由...该案例主要涉及Python中整型、浮点型数据的运用,通过 int()函数和 float()函数实现数据类型的转换,以及运算符的使用规则。 步骤:任务实施 案例 燃烧卡路里 设计思
# 将需要转换的数字从右向左,每4位分成一个section,如:24530467103,将该数字拆分后,得到: # 245 3046 7103 (245亿3046万7103) # 对拆分后的数字先按照section进行数字到汉字的转换,然后添加数值单位,如:仟,...
Python:关于pillow库图像处理的自制简单小程序配套UI转换程序