描述
实现一个算法,可以将小写数字转换成大写数字。
输入
输入一个整数。范围在0~450亿之间。
输出
输出对应的大写数字,以“元整”结尾。 大写数字要符合汉语读写习惯。
输入样例
0
5
233
1001
40607
8900000000
复制样例
输出样例
零元整
伍元整
贰佰叁拾叁元整
壹仟零壹元整
肆万零陆佰零柒元整
捌拾玖亿元整
def f1(num):
# 0~9
lst1 = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
return lst1[num]
def f10(num):
# 10~99
ret=""
if num%10==0:
ret=f1(num//10)+"拾"
else:
ret=f1(num//10)+"拾"+f1(num%10)
return ret
def f100(num):
# 100~999
ret = f1(num // 100) + "佰"
num_left=num%100
if num_left==0:
pass
elif num_left<10 :
ret+="零"+f1(num_left)
else:
ret+=f10(num_left)
return ret
def f1000(num):
# 1000~9999
ret=f1(num//1000)+"仟"
num_left=num%1000
if num_left==0:
pass
elif num_left<10:
ret+="零"+f1(num_left)
elif num_left<100:
ret+="零"+f10(num_left)
else:
ret+=f100(num_left)
return ret
def g4(num):
ret=""
if num<10:
ret="零"+f1(num)
elif num<100:
ret="零"+f10(num)
elif num<1000:
ret="零"+f100(num)
else:
ret=f1000(num)
return ret
def f4(num):
ret = ""
if num < 10:
ret = f1(num)
elif num < 100:
ret = f10(num)
elif num < 1000:
ret = f100(num)
else:
ret = f1000(num)
return ret
def f10_4(num):
# 10^4~10^8-1
ret=f4(num//10000)+"万"
if num%10000==0:
pass
else:
ret+=g4(num%10000)
return ret
def f10_8(num):
# 10^8~10^12-1
num_left=num%10**8
ret = f4(num // 10**8) + "亿"
if num % 10**8 == 0:
pass
elif num_left<10000:
ret+=g4(num)
elif num_left<10**7:
ret+="零"+f10_4(num_left)
else:
ret+=f10_4(num_left)
return ret
def solution(line):
num=int(line)
# lst1=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
# lst2=["拾","佰","仟","万","亿"]
ret=""
if 0<=num<10000:
ret=f4(num)
elif 10000<=num<10**8:
ret=f10_4(num)
else:
ret=f10_8(num)
return ret+"元整"