VPS/云主机等
优惠信息分享

Python登录系统练习题的设计与改进-感觉对函数调用可能有误解

学习Python,做课后作业的时候刚好碰到一道设计登录系统的练习题,额,题目如下:

尝试编写一个用户登录程序(尝试将功能封装成函数),程序实现如图:

额,程序从逻辑上来讲貌似不难,不过要求是用函数封装,然后,我可能对函数封装有什么误解,所以虽然功能实现了,但是这个程序就是不美观啊。代码如下:

def log():    print('|--- 新建用户:N/n ---|')    print('|--- 登录账号:E/e ---|')    print('|--- 退出程序:Q/q ---|')    code = input('|--- 请输入指令代码:')    return codelogin = {}code = log()if code == 'N' or code == 'n':    name = input('请输入用户名:')    password = input('请输入密码:')    login[name] = password    if name in login:        print('注册成功,赶紧登陆试试吧!')        print('\n')code = log()if code == 'N' or code == 'n':    name = input('请输入用户名:')    if name in login:        print('%s此用户名已经被使用,请重新输入:' % name ,end='')        name = input()        password = input('请输入密码:')        login.setdefault(name)        login[name] = password        if name in login:print('注册成功,赶紧登陆试试吧^_^')print('\n')        else:print('用户名不存在,请新建用户')print('\n')code = log()if code == 'E' or code == 'e':    name = input('请输入用户名:')    if name not in login:        print('您输入的用户名不存在,请重新输入:',end = '')        name = input()    if name in login:        print('请输入密码:',end = '')        password = input()    for each in login.values():        if password == each:break    print('欢迎进入XXOO系统,请点击右上角的X结束程序!')    print('\n')code = log()while 1:    if code == 'Q' or code == 'q':        print('退出程序')        break

就这么轻松写完代码,测试功能发现完全和题目要求的是一毛一样,然后我沾沾自喜的以为完成了设计,但是对比了答案之后,一阵羞愧。

user_data = {}def new_user():    prompt = '请输入用户名:'    while True:        name = input(prompt)        if name in user_data:prompt = '此用户名已经被使用,请重新输入:'continue        else:break    passwd = input('请输入密码:')    user_data[name] = passwd    print('注册成功,赶紧试试登录吧^_^')def old_user():    prompt = '请输入用户名:'    while True:        name = input(prompt)        if name not in user_data:prompt = '您输入的用户名不存在,请重新输入:'continue        else:break    passwd = input('请输入密码:')    pwd = user_data.get(name)    if passwd == pwd:        print('欢迎进入XXOO系统,请点右上角的X结束程序!')    else:        print('密码错误!')def showmenu():    prompt = '''|--- 新建用户:N/n ---||--- 登录账号:E/e ---||--- 推出程序:Q/q ---||--- 请输入指令代码:'''    while True:        chosen = False        while not chosen:choice = input(prompt)if choice not in 'NnEeQq':    print('您输入的指令代码错误,请重新输入:')else:    chosen = True        if choice == 'q' or choice == 'Q':break        if choice == 'n' or choice == 'N':new_user()        if choice == 'e' or choice == 'E':old_user()showmenu()

答案的代码明显高大上,哎,自己的写的代码明显土鳖了。记录于此,勉之!!!

赞(0)
未经允许不得转载:遗弃你|YIQINI.COM » Python登录系统练习题的设计与改进-感觉对函数调用可能有误解

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册