已知数字 0 至 9 的中文大写金额数字,分别是零、壹、贰、叁、肆、伍、陆、柒、捌、玖
请用代码实现:
构建数据容器,用于存储该对应关系。分别获取小写数字 3、7、9 所对应的中文大写数字分别获取大写数字 贰、柒、捌 所对应的小写数字。
(资料图)
题源:👉数字大小写转换:存储和调用对应关系 分析:
# 大写数字数据源Upper0 = "零、壹、贰、叁、肆、伍、陆、柒、捌、玖"Upper1 = Upper0.split("、")# 小写数字数据源num_list = []for number in range(10):num_list.append(number)
用 split("、")方法将 Upper0以 、分割,封装到列表容器中(以备后期使用)这里首先小白新建了一个列表并引入了小写数字作为数据源
# 封装函数def Swap_func(lower,upper): swap = {} swap[lower] = upper return swap
定义了一个函数,名为Sawp_func,形参为 lower, upper:该函数的功能就是:实现对字典进行键值对的添加,也是本代码实现的核心
m = map(Swap_func, num_list, Upper1)
调用该函数,并使用 map()内置函数,将结果传给变量 m这里将 num_list位置参数传给 lower,Upper1传给 upper,实现多次对 swap字典的键值对的添加,这也就是函数的功能之一:实现对代码的复用
info = list(m)print(info)#运行结果:[{0: "零"}, {1: "壹"}, {2: "贰"}, {3: "叁"}, {4: "肆"}, {5: "伍"}, {6: "陆"}, {7: "柒"}, {8: "捌"}, {9: "玖"}]
成功了,将小写数字和大写数字一一对应起来了下一步的任务就是实现查询的功能
print("{0:-^74}".format("数字间用英文逗号间隔,输入结束后,按回车结束"))print("{0:-^80}".format("若为单个数字,请以英文逗号隔开哦"))Input0 = eval(input("请输入你需要转换的任意小写数字:"))print()print()print(f"小写数字 {Input0} 对应的中文大写数字为: {[list(info[number].values()) for number in Input0]}")
这里小白使用了 format()方法对其字符串进行文字排版简言之就是:"xx {0} xxx {1} xx".format(a, b), x 处原样输出, 而 a , b会替换 {}中的 0和 1(也就是所说的格式化)Input0 = eval(input():input():获取用户的输入信息,相当于C语言中的 scanf()函数。eval():用法就是将引号去掉,使引号的内容变成可操作的表达式。print(f""): 作用类似于 format方法,{}是 格式输出,其余部分是原样输出
最关键的来了!!
[list(info[number].values()) for number in Input0]
大家可能对这个不理解,这个其实就是 列表生成器,又称列表推导式,列表生成式重要的格式如下:[(关于 x 的表达式) for x in 迭代器]
零,壹,贰,叁,肆,伍,陆,柒,捌,玖 = [i for i in range(10)]
涉及到序列解包的相关知识: 👉Python学习吧-序列解包和序列封包
这里小白用了不太好的办法,逐个对汉字重新赋值,因此也证明了python 的强大之处在于支持中文。因此,只要用户输入汉字,对应的小写数字就出来了。
源代码如下:
# 数据源Upper0 = "零、壹、贰、叁、肆、伍、陆、柒、捌、玖"Upper1 = Upper0.split("、")# 封装函数num_list = []for number in range(10):num_list.append(number)def Swap_func(lower,upper): swap = {} swap[lower] = upper return swapm = map(Swap_func, num_list, Upper1)info = list(m)# [{0: "零"}, {1: "壹"}, {2: "贰"}, {3: "叁"}, {4: "肆"}, {5: "伍"}, {6: "陆"}, {7: "柒"}, {8: "捌"}, {9: "玖"}]print("{0:-^74}".format("数字间用英文逗号间隔,输入结束后,按回车结束"))print("{0:-^80}".format("若为单个数字,请以英文逗号隔开哦"))Input0 = eval(input("请输入你需要转换的任意小写数字:"))print()print()print(f"小写数字 {Input0} 对应的中文大写数字为: {[list(info[number].values()) for number in Input0]}")print()零,壹,贰,叁,肆,伍,陆,柒,捌,玖 = [i for i in range(10)]print("{0:-^63}".format("大写数字间用英文逗号间隔,输入结束后,为方便您查询,请按回车结束鸭~"))print("{0:-^80}".format("若为单个汉字,请以英文逗号隔开哦"))print(f"提示:{"零、壹、贰、叁、肆、伍、陆、柒、捌、玖 (复制任意大写数字或手动输入)".replace("、",",")}")Input1 = eval(input("请输入你需要转换的任意中文大写数字:"))Upper_list = [零,壹,贰,叁,肆,伍,陆,柒,捌,玖]print()print()print(f"大写数字 {[list(info[number].values()) for number in Input1]} 对应的小写数字为: {Input1}")print()print("{0:-^86}".format("欢迎您下次使用,再见~"))
运行效果:
请输入你需要转换的任意小写数字:3,7,9
运行结果1:
小写数字 (3, 7, 9) 对应的中文大写数字为: [["叁"], ["柒"], ["玖"]]
继续输入:
请输入你需要转换的任意中文大写数字:贰,柒,捌运行结果2:
大写数字 [["贰"], ["柒"], ["捌"]] 对应的小写数字为: (2, 7, 8)----------欢迎您下次使用,再见~--------------
好了,以上就是小白的代码,手工打字,属实不易,如有帮助,一键三连。编程的最大好处就是在于,对于一个问题有多个解法。如果您有更好的方法,请在评论区下留言吧!