数字形式转换
描述
获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
0到9对应的中文字符分别是:零一二三四五六七八九
输入输出示例
输入
1
123
9876543210
输出
一
一二三
九八七六五四三二一零
分析问题
1.要求是将阿拉伯数字转成中文数字,单向转换;
2.输入要求是只有阿拉伯数字的字符串;
3.转换过程是对输入数据逐个识别并一一转换成中文数字;
4.输出要求是输出中文数字的字符串。
程序内容
Nu=input() #将输入内容强制设置为字符串格式
b=len(Nu) # 使用len()函数得到输入内容长度
c=0 #作为循环变量时的计数器
z='' #将z设置成字符串格式,最终的输出载体
for i in range(b): #for in循环,将嵌套内容循环输入阿拉伯数字个数次
if eval(Nu[c])==0: #判断阿拉伯数字是几,将其一对一换成中文数字
z+="零"
c+=1
elif eval(Nu[c])==1:
z+="一"
c+=1
elif eval(Nu[c])==2:
z+="二"
c+=1
elif eval(Nu[c])==3:
z+="三"
c+=1
elif eval(Nu[c])==4:
z+="四"
c+=1
elif eval(Nu[c])==5:
z+="五"
c+=1
elif eval(Nu[c])==6:
z+="六"
c+=1
elif eval(Nu[c])==7:
z+="七"
c+=1
elif eval(Nu[c])==8:
z+="八"
c+=1
elif eval(Nu[c])==9:
z+="九"
c+=1
print(z)
以上就是数字形式转换的一个解答,但是可以看到,代码行数非常多,那么有没有简单的方法解答这个问题呢?请看下面的解:
程序内容2
#numbertransfer.py
num=input()
numstr="零一二三四五六七八九"
n=""
i=0
while i<len(num):
n=n+numstr[eval(num[i])]
i+=1
print(n)
这个就是数字转换问题的第二个解。
其中运用了字符串的相关知识,字符串函数len()是计算字符串长度,而后面利用while循环语句,对转换字符串进行逐一转换并累积赋值。输出最后结果即可。
传送门
看完阿拉伯数字转换成中文数字后,请思考一下,如果给出的是中文的一二三四五六七八九十,如何将它转变成汉字大写的“壹, 贰,叁,肆,伍,陆,柒,捌,玖,拾”呢?
有兴趣的朋友请看我的另一篇博文,《条件语句与循环语句:将数字一二三四五六七八九十转化成汉字大写的壹, 贰,叁,肆,伍,陆,柒,捌,玖,拾》
https://blog.csdn.net/PigeonKiing/article/details/102457090