请用代码实现:
题源:数字大小写转换:存储和调用对应关系
分析:
# 大写数字数据源
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
lower
, upper
:m = map(Swap_func, num_list, Upper1)
map()
内置函数,将结果传给变量 m
num_list
位置参数传给 lower
,Upper1
传给 upper
,实现多次对 swap
字典的键值对的添加,这也就是函数的功能之一:实现对代码的复用Python 官方文档描述如下:
返回一个将函数
func
应用于iterable
中每一项并输出其结果的迭代器
。如果传入了额外的
iterable
参数,func
必须接受相同个数
的实参并被应用于从所有可迭代对象中并行获取的项。当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束。
(PS:这里小白理解为短板效应)
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 方法,{}
是 格式输出 ,其余部分是原样输出字符串方法
str.format()
,Python 官方文档描述如下:
- 执行字符串格式化操作。调用此方法的字符串可以包含字符串字面值或者以花括号
{}
括起来的替换域。每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。
最关键的来了!!
[list(info[number].values()) for number in Input0]
[(关于 x 的表达式) for x in 迭代器]
零,壹,贰,叁,肆,伍,陆,柒,捌,玖 = [i for i in range(10)]
涉及到序列解包的相关知识 :
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 swap
m = 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)
----------欢迎您下次使用,再见~--------------