Python之美元大写转换器
网上找了好久没找到python版本的,照着js抄了一下。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = "leo"
__time__ = "2018-10-11"
'''
http://www.52ij.com/zhuanhuanqi/meiyuandaxie/shuzi.js
改编
'''
import math
arr1 = ("", " thousand", " million", " billion")
arr2 = ("zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety")
arr3 = ("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
arr4 = ("ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen")
def English(a):
strRet = ""
if (len(a) == 3 and a[0:3] != "000"):
if a[0:1] != "0":
strRet = strRet + arr3[int(a[0:1])] + " hundred"
if a[1:2] != "00":
strRet = strRet + " and "
a = a[1:]
if len(a) == 2:
if a[0:1] == "0":
a = a[1:]
elif a[0:1] == "1":
strRet = strRet + arr4[int(a[1:2])]
else:
strRet = strRet + arr2[int(a[0:1])]
if a[1:1] != "0":
strRet = strRet + "-"
a = a[1:]
if (len(a) == 1 and a[0:1] != "0"):
strRet = strRet + arr3[int(a[0:1])]
return strRet
def doToEn(a):
b = len(a)
f, h = 0, 0
g = ""
e = math.ceil(b / 3)
k = b - e * 3
g = ""
for f in range(k, b, 3):
h += 1
if f >= 0:
num3 = a[f:f + 3]
else:
num3 = a[0:k + 3]
strEng = English(num3)
if strEng != "":
if g != "":
g += ","
g += English(num3) + arr1[e - h]
return "U.S. DOLLARS " + g.upper() + " ONLY"
def doToEnWuxiaoshudian(a):
b = len(a)
f, h = 0, 0
g = ""
e = math.ceil(b / 3)
k = b - e * 3
g = ""
for f in range(k, b, 3):
h += 1
if f >= 0:
num3 = a[f:f + 3]
else:
num3 = a[0:k + 3]
strEng = English(num3)
if strEng != "":
if g != "":
g = g + ","
g = g + English(num3) + arr1[e - h]
return "U.S. DOLLARS " + g.upper()
def doToEnYouxiaoshudian(a):
b = len(a)
f, h = 0, 0
g = ""
e = math.ceil(b / 3)
k = b - e * 3
g = ""
for f in range(k, b, 3):
h += 1
if f >= 0:
num3 = a[f:f + 3]
else:
num3 = a[0:k + 3]
strEng = English(num3)
if strEng != "":
if g != "":
g = g + ","
g = g + English(num3) + arr1[e - h]
return "CENTS " + g.upper() + " ONLY"
if __name__ == '__main__':
number = '1234.56'
if str.find(number, '.') != -1:
# 有小数点
aaaaa = number.split(".")[0]
bbbbb = number.split(".")[1]
ccccc = doToEnWuxiaoshudian(aaaaa)
ddddd = ""
if len(bbbbb) > 2:
print("请精确到小数点后两位!如:6324.38")
else:
ddddd = doToEnYouxiaoshudian(bbbbb)
result = ccccc + " AND " + ddddd
else:
result = doToEn(number)
print(result)