crazy-anonymous
2021-08-21 11:49
采纳率: 100%
浏览 34
已结题

一个关于python 中 if_elif 的问题

最近写了一个练习题,代码如下:

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)


先添加一个名片:

img

然后 , 修改名片:

img

发现, 控制台并没让我输入手机号和QQ号

img

使用pycharm的代码调试发现代码执行到67行的elif时就结束了
然而, 当我们在修改名片时输入一个没有使用过的用户名时, 我发现第68行的elif执行了

img

后来, 我把第68和71行的 elif 改成 if 代码竟然又正常运行下去了:

img

我想知道第二次代码执行到66行的elif时, 代码就结束了.

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题