最近写了一个练习题,代码如下:
information = []
a = '-' * 30
func = '''
1:添加名片
2:删除名片
3:修改名片
4:查询名片
5:显示所有名片
6:退出系统'''
flag = True
# def business_card_all():
# for i in information
# pass
def add(x, y, z):
global information
business_card = {'name': x, 'telephone_number': y, 'QQ_number': z}
information.append(business_card)
print(information)
def delete(x):
global information
location = information.index(x[0])
del information[location]
def revise(w, x, y, z):
global information
location = information.index(w[0])
information[location] = {'name': x, 'telephone_number': y, 'QQ_number': z}
def inquire(x):
global information
print(x[0])
def dir():
print(information)
def management_system(function):
if 1 <= function <= 4 and type(function) == int:
if function == 1:
name = input('请输入姓名:')
elif function == 2:
name = input('输入删除名片的姓名:')
elif function == 3:
name = input('请输入修改名片的姓名:')
else:
name = input('请输入查询名片的姓名:')
check_duplicate = filter(lambda a: a['name'] == name, information)
examine = list(check_duplicate)
if examine:
if function == 1:
print('用户名被占用, 请重新输入!')
return
elif function == 2:
delete(examine)
print('用户名: {} 已删除'.format(examine[0]['name']))
return
elif function == 4:
inquire(examine)
elif (not examine) and (2 <= function <= 4 and type(function) == int):
print('用户名不存在!')
return
elif (bool(examine) == False) or function == 3:
telephone_number = input('请输入手机号:')
QQ_number = input('请输入QQ号:')
if function == 3:
revise(examine, name, telephone_number, QQ_number)
else:
add(name, telephone_number, QQ_number)
elif function == 5:
dir()
elif function == 6:
global flag
exit = input('亲, 你确认要退出么?~~~~(> _ <)~~~~(yes or no)')
if exit == 'yes':
flag = False
return
else:
print('谢谢亲对此软件的支持!')
return
else:
return
while flag:
print(a, '\n', ' ' * 6, '名片管理系统 V1.0', func, '\n', a)
function = int(input('请输入要进行的操作(数字)'))
management_system(function)
先添加一个名片:
然后 , 修改名片:
发现, 控制台并没让我输入手机号和QQ号
使用pycharm的代码调试发现代码执行到67行的elif时就结束了
然而, 当我们在修改名片时输入一个没有使用过的用户名时, 我发现第68行的elif执行了
后来, 我把第68和71行的 elif 改成 if 代码竟然又正常运行下去了:
我想知道第二次代码执行到66行的elif时, 代码就结束了.