(Python)简易通讯录

问题描述:

将用户输入用逗号分隔的一系列人名作为键,用户输入的逗号分隔的手机号作为值,创建字典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

print

【样例输出】

{'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更简便的判断再调用模块化函数的方式,这里以后再深入研究

 

 

结束

累死了 还有其他作业要补 妈的 一拳把全中国大学打爆

 

posted @ 2022-11-13 17:12  蜗牛诶  阅读(611)  评论(0)    收藏  举报