python将数字转换为汉字(2个程序)

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))

猜你喜欢

转载自blog.csdn.net/qq_40500571/article/details/108423104