数字形式转换问题
今天在python123遇到了一个小问题
要求:获得用户输入的一个正整数输入,输出该数字对应的中文字符表示。
0到9对应的中文字符分别是:零一二三四五六七八九
例如:
乍一看,挺简单一个问题嘛,直接上代码,然后一顿操作猛如虎
num = input()
for x in num[0:]:
if x == '0':
print('零')
elif x == '1':
print('一')
elif x == '2':
print('二')
elif x == '3':
print('三')
elif x == '4':
print('四')
elif x == '5':
print('五')
elif x == '6':
print('六')
elif x == '7':
print('七')
elif x == '8':
print('八')
elif x == '9':
print('九')
else:
print('false')
但是。。。。事情没那么简单,要求输出结果是横着,而且。。。。。
定睛一看
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
5行实现,莫不是有什么内置函数可以直接实现,一顿搜索也没找到
再来!
我就在想能不能试一下建两个列表,分别存储阿拉伯数字0-9和零-九,然后再用index通过其位置相对应来实现。
整!!
num = input()
nom_num = ['0','1','2','3','4','5','6','7','8','9']
han_num = ['零','一','二','三','四','五','六','七','八','九']
final_num = []
for x in num[:]:
index = nom_num.index(x)
final_num.append(han_num[index])
print(han_num[index],end='')
。。。。。。。。。。。还是多了
再来!
num = input()
nom_num = ['0','1','2','3','4','5','6','7','8','9']
han_num = ['零','一','二','三','四','五','六','七','八','九']
for x in num[:]:
index = nom_num.index(x)
print(han_num[index],end='')
。。。。。多一行
再来!!!
换个思路,将数字以 ‘0’:‘零’ 的形式存储到字典中,通过dict.get(),来寻找某个阿拉伯数字所对应的值
num = input()
num_dic = {'0':'零','1':'一','2':'二','3':'三','4':'四','5':'五','6':'六','7':'七','8':'八','9':'九'}
for x in num[:]:
n = num_dic.get(x,0)
print(n,end='')
搞定!!!
————————————但是,系统给的答案,更简单—————————————————————————
template = "零一二三四五六七八九"
s = input()
for c in s:
print(template[eval(c)], end="")
这。。。只有四行
原理和我设置的两个列表类似,不过默认了0-9的顺序,就没在设置新字符串,可以省一行,
然后遍历输入的字符串,通过eval()格式化,直接将阿拉伯数字,作为字符串的下标,得到字符串对应位置的值。
。。。只有四行
原理和我设置的两个列表类似,不过默认了0-9的顺序,就没在设置新字符串,可以省一行,
然后遍历输入的字符串,通过eval()格式化,直接将阿拉伯数字,作为字符串的下标,得到字符串对应位置的值。
这实在是高!!棒
---------------------------每天进步一点点---------------------------