将数字分成三个数字一小组的list
P.S.
- 代码还需要改进;
- 以后的代码都会写备注;
以下是Python 的源代码:
import numpy
import math
class Solution(object):
def numberToWords(self, num):
"""
将整个数字分成三个一小组的list
:type num: int
:rtype: str
"""
num0=num ##用来求每个小组中的元素,消耗元素
num1=num ##用来求一组数可以组成几个三位小组,消耗元素
trib_num=0 ##小组数
for i in range(4): ##判断有几个小组
if num1>0:
trib_num+=1
num1=int(num1/1000)
trible=[] ##小组内的具体元素
num_str=[] ##最后输出的字符串
if num==0:
num_str='Zero'
else:
for i in range(trib_num): ##小组内的具体元素
trible.append(num0 % 1000)
num0=int(num0/1000)
for i in range(trib_num): ##小组内循环
x=trible[trib_num-1-i]
hund_num=int(x/100) ##百位
decm_num=int(x%100/10) ##十位
sing_num=x%10 ##个位
## 此位是否都为零
if hund_num==0 and decm_num==0 and sing_num==0:
pass
## 不为零
else:
## 百位有数字输出
if hund_num>0:
y=sing(hund_num)
num_str.append(y)
num_str.append(' ')
num_str.append('Hundred')
## 如果百位后有元素的话需要加上空格
if decm_num>0 or sing_num>0 or i<trib_num-1:
num_str.append(' ')
## 十位有大于1数字输出
if decm_num>1:
y=decm(decm_num)
num_str.append(y)
## 有个位的话需要加上空格和个位
if sing_num>0:
num_str.append(' ')
y=sing(sing_num)
num_str.append(y)
## 如果个位后还有元素的话需要加空格
if i<trib_num-1:
num_str.append(' ')
## 如果十位的元素为1
elif decm_num==1:
y=tens(sing_num)
num_str.append(y)
## 如果十位后还有元素
if i<trib_num-1:
num_str.append(' ')
## 只有一个个位
elif sing_num>0:
y=sing(sing_num)
num_str.append(y)
##如果个位后还有元素
if i<trib_num-1:
num_str.append(' ')
## 对小组的位进行定位
y=thou(trib_num-1-i)
num_str.append(y)
## 如果小组后面还有元素则加空格
x=pow(1000,(trib_num-1-i))
if (num%x)>0:
num_str.append(' ')
## 拼接字符串
str0=''
str0=str0.join(num_str)
## return 2000%1000
return str0
def thou(thou_num):
thou_str=''
if thou_num==0:
thou_str=''
if thou_num==1:
thou_str='Thousand'
if thou_num==2:
thou_str='Million'
if thou_num==3:
thou_str='Billion'
return thou_str
def decm(decm_num):
decm_str=''
if decm_num==2:
decm_str='Twenty'
elif decm_num==3:
decm_str='Thirty'
elif decm_num==4:
decm_str='Forty'
elif decm_num==5:
decm_str='Fifty'
elif decm_num==6:
decm_str='Sixty'
elif decm_num==7:
decm_str='Seventy'
elif decm_num==8:
decm_str='Eighty'
elif decm_num==9:
decm_str='Ninety'
return decm_str
def tens(tens_num):
tens_str=''
if tens_num==0:
tens_str='Ten'
if tens_num==1:
tens_str='Eleven'
if tens_num==2:
tens_str='Twelve'
if tens_num==3:
tens_str='Thirteen'
if tens_num==4:
tens_str='Fourteen'
if tens_num==5:
tens_str='Fifteen'
if tens_num==6:
tens_str='Sixteen'
if tens_num==7:
tens_str='Seventeen'
if tens_num==8:
tens_str='Eighteen'
if tens_num==9:
tens_str='Nineteen'
return tens_str
def sing(sing_num):
sing_str=''
if sing_num==1:
sing_str='One'
if sing_num==2:
sing_str='Two'
if sing_num==3:
sing_str='Three'
if sing_num==4:
sing_str='Four'
if sing_num==5:
sing_str='Five'
if sing_num==6:
sing_str='Six'
if sing_num==7:
sing_str='Seven'
if sing_num==8:
sing_str='Eight'
if sing_num==9:
sing_str='Nine'
return sing_str
num = 1000010
output=Solution().numberToWords(num)
print(output)