问题描述:
将用户输入用逗号分隔的一系列人名作为键,用户输入的逗号分隔的手机号作为值,创建字典MyDict,
输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),
每得到一个输入后,根据输入进行操作。
add name number: # 在字典中加入以name 为键、以number 为值的元素
print: # 输出字典
del name:# 删除字典中键为name 的元素,当name 不存在时,输出'键不存在'
update name number: # 更新字典中以name 为键的元素的值为number
value: # 以列表形式输出字典中的所有值
key: # 以列表形式输出字典中所有键
clear: # 清空字典
第一行输入一个正整数 n
第二行输入用逗号分隔的字符串切分为一系列人名
第三行输入的逗号分隔的、与第二行相同数量的手机号
随后的 n 行,每行输入一个如示例格式的命令,命令与参数间空格分隔
每遇到“print”时,在新的一行输出字典
【样例输入】
3
Tom,Jack,Lee
13877665566,18977665543,13522336688
add John 13988997765
del Lee
【样例输出】
{'Tom': '13877665566', 'Jack': '18977665543', 'John': '13988997765'}
IPO:
输入题目相应要求,用函数模块化的思想,将输入的命令按模块进行处理,再输出。
代码如下:
1 def add(lis): #add函数 2 key1 = lis[1] 3 value1 = lis[2] 4 Mydict[key1] = value1 5 6 def del_(lis): #del函数,del_防止与内置函数冲突 7 name1 = lis[1] 8 if name1 in Mydict: 9 Mydict.pop(name1) 10 else: 11 print("键不存在") 12 13 def keys(n): #输出所有的keys 14 keys_list = n.keys() 15 print(list(keys_list)) 16 17 def values(n): #输出所有的values 18 values_list = n.values() 19 print(list(values_list)) 20 21 def update(lis): #修改函数 22 name2 = lis[1] 23 value2 = lis[2] 24 Mydict[name2] = value2 25 26 if __name__ == "__main__": 27 Mydict = {} 28 n = int(input()) 29 name = input().split(',') 30 number = input().split(',') 31 Mydict = dict(zip(name,number)) 32 while True: 33 #for i in range(n-1): 34 lis = input().split() 35 if lis[0] == 'add': 36 add(lis) 37 if lis[0] == 'del': 38 del_(lis) 39 if lis[0] == 'print': 40 print(Mydict) 41 break 42 if lis[0] == 'key': 43 keys(Mydict) 44 break 45 if lis[0] == 'value': 46 values(Mydict) 47 break 48 if lis[0] == 'clear': 49 Mydict.clear() 50 if lis[0] == 'update':
51 update(lis)
备注:
- 因为字典的性质,add函数与update函数块作用实际上效果相同。
- 问题描述的输入正整数n,理解为后续模块函数的操作次数,但我在这直接套用一个死循环,
如果需要利用输入的n进行有限次的操作,将注释的for i in range(n-1):取消注释,
再把选择判断函数的break删掉即可(应该)
- 应该还有比if更简便的判断再调用模块化函数的方式,这里以后再深入研究
结束
累死了 还有其他作业要补 妈的 一拳把全中国大学打爆
标签:name,Python,简易,通讯录,lis,print,Mydict,输入,字典 From: https://www.cnblogs.com/cjun0701/p/16886346.html