返回顶部

python 函数对象实现菜单功能

python 函数对象实现菜单功能

实现根据现有菜单功能提示,选择菜单实现功能。当然用shell的case+while也可以简单实现这样点单功能需求

python脚本

脚本一

实现初步菜单功能,判断编号是否存在

#vi  r9.py
#!/bin/python3
# -*- coding: utf-8 -*-
def login():
    print('登录功能')
def transfer():
    print('转账功能')
def check_banlance():
    print('查询余额')

while True:
    print("""
    0 退出
    1 登录
    2 转账
    3 查询余额
    """)
    choice=input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('请输入编号!')
        continue
    if choice == '0':
        break
    if choice == '1':
        login()
    if choice == '2':
        transfer()
    if choice == '3':
        check_banlance()

# python3 r9.py
    0 退出
    1 登录
    2 转账
    3 查询余额
请输入命令编号1
登录功能
    0 退出
    1 登录
    2 转账
    3 查询余额
请输入命令编号2
转账功能
    0 退出
    1 登录
    2 转账
    3 查询余额
请输入命令编号3
查询余额
    0 退出
    1 登录
    2 转账
    3 查询余额
请输入命令编号:asc
请输入编号!
    0 退出
    1 登录
    2 转账
    3 查询余额
请输入命令编号0

 脚本二

添加菜单需求,需在添加菜单循环和打印,需要修改函数定义代码,打印代码和循环判断代码

# vim  r9.py
#!/bin/python3
# -*- coding: utf-8 -*-
def login():
    print('登录功能')
def transfer():
    print('转账功能')
def check_banlance():
    print('查询余额')
def withdraw():
    print('提现')

while True:
    print("""
    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    """)
    choice=input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('请输入编号!')
        continue
    if choice == '0':
        break
    if choice == '1':
        login()
    elif choice == '2':
        transfer()
    elif choice == '3':
        check_banlance()
    elif choice == '4':
        withdraw()
    else:
        print('输入指令不存在!')

# python3 r9.py
    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现

请输入命令编号:4
提现
    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
请输入命令编号:3
查询余额
    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
请输入命令编号:0

脚本三

此处优化为,添加新菜单功能时,将不需要在添加判断循环,减少重复代码,只需添加定义函数代码和打印即可

# cat r9_1.py
#!/bin/python3
# -*- coding: utf-8 -*-
def login():
    print('登录功能')
def transfer():
    print('转账功能')
def check_banlance():
    print('查询余额')
def withdraw():
    print('提现')
def register():
    print('注册')
func_dic={
    '1':login,
    '2':transfer,
    '3':check_banlance,
    '4':withdraw,
    '5':register,
    'name':'wei',
    'age':22
}

#func_dic['1']()  调用
#'5' in func_fic   判断序号是否存在

while True:
    print("""
    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    5 注册
    """)
    choice=input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('请输入编号!')
        continue
    if choice == '0':
        break
    if choice in func_dic:
        func_dic[choice]()
    else:
        print('输入的指令不存在!')


# python3 r9_1.py

    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    5 注册

请输入命令编号:5
注册

    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    5 注册

请输入命令编号:4
提现

    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    5 注册

请输入命令编号:2
转账功能

    0 退出
    1 登录
    2 转账
    3 查询余额
    4 提现
    5 注册

请输入命令编号:0

脚本四

再次升级优化只需要添加函数定义和函数列表,循环体和打印内容无需调整即可

# cat r9_2.py
#!/bin/python3
# -*- coding: utf-8 -*-
def login():
    print('登录功能')
def transfer():
    print('转账功能')
def check_banlance():
    print('查询余额')
def withdraw():
    print('提现')
def register():
    print('注册')
func_dic={
    '0':['退出',None],
    '1':['登录',login],
    '2':['转账',transfer],
    '3':['查询余额',check_banlance],
    '4':['提现',withdraw],
    '5':['注册',register]
}


while True:
    for i in func_dic:
        print(i,func_dic[i][0])

    choice=input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('请输入编号!')
        continue
    if choice == '0':
        break
    if choice in func_dic:
        func_dic[choice][1]()
    else:
        print('输入的指令不存在!')


# python3 r9_2.py
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:2
转账功能
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:3
查询余额
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:1
登录功能
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:4
提现
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:asd
请输入编号!
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:5
注册
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:0

脚本五

针对列表只有只读权限,修改为元组类型,最为严谨

#!/bin/python3
# -*- coding: utf-8 -*-
def login():
    print('登录功能')
def transfer():
    print('转账功能')
def check_banlance():
    print('查询余额')
def withdraw():
    print('提现')
def register():
    print('注册')
func_dic={
    '0':('退出',None),
    '1':('登录',login),
    '2':('转账',transfer),
    '3':('查询余额',check_banlance),
    '4':('提现',withdraw),
    '5':('注册',register),
}


while True:
    for i in func_dic:
        print(i,func_dic[i][0])

    choice=input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('请输入编号!')
        continue
    if choice == '0':
        break
    if choice in func_dic:
        func_dic[choice][1]()
    else:
        print('输入的指令不存在!')


# python3 r9_2.py
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:1
登录功能
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:3
查询余额
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:5
注册
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:asd
请输入编号!
0 退出
1 登录
2 转账
3 查询余额
4 提现
5 注册
请输入命令编号:0

 

posted @ 2022-05-09 21:57  九尾cat  阅读(635)  评论(0编辑  收藏  举报