python将数字转换为汉字(2个程序)
18年写过一个,今天面试遇到同样的题型,不同时间段不同实现
今天得面试原题:
请实现一个函数, 输入一个小于100000000(一亿)的自然数,并在屏幕上打印这个数字的中文写法。(20分)
num=input()
num=str(num)
w=['零','一','二','三','四','五','六','七','八','九']
n=['千','百','十','','千','百','十','']
#100000000
def trans(num):
lengt=len(num)
if lengt>8:
return "超出大小"
str=''
islastIsEro=False
i=0
while i<lengt:
#print(num[i])
tmp=int(num[i])
if tmp==0:
if islastIsEro != True:
str+=w[tmp]
#str+=n[8-lengt+i]
islastIsEro = True
if lengt-i==5:
if islastIsEro == True:
str=str[:-1]
str+='万'
else :
str+=w[tmp]
str+=n[8-lengt+i]
islastIsEro=False
if lengt-i==5:
if islastIsEro == True:
str=str[:-1]
str+='万'
i+=1
if str[-1]==w[0]:
str=str[:-1]
return str
print(trans(num))
18年写的一段:
#!/usr/bin/env python
# coding=utf-8
countStr=["","万","亿","","千","百","十",""]
numberStr=["零","一","二","三","四","五","六","七","八","九"]
num=10100000
def numToStr(number):
nu=str(number)
string=""
i=1
iszero=0
flag=0
iscount=0
while i<=len(nu):
buf=""
if nu[-i]!="0":
if i%4==0:
buf=numberStr[int(nu[-i])]+countStr[-4]
else:
buf=numberStr[int(nu[-i])]+countStr[-(i%4)]
if (i-1)%4==0 :
buf=buf+countStr[(i-1)//4]
if iszero==1 and flag==1 and iscount==0:
if nu[-i]!="0"or (i-1)%4==0:
buf=buf+numberStr[0]
iszero=0
if (i-1)%4==0:
iscount=1
if nu[-i]=="0" :
iszero=1
else:
flag=1
iscount=0
iszero=0
string=buf+string
i+=1
return string
a=input("输入一个数字")
#a=input("in")
a=str(a)
print(numToStr(a))