鱼C论坛

 找回密码
 立即注册
查看: 1281|回复: 6

[已解决]一个小功能 一个函数可以搞定 为啥大佬们都喜欢分成好多

[复制链接]
发表于 2020-9-13 22:37:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是:
1902027kd7256h6xy775dd.png

这有什么讲究吗


小甲鱼的代码:

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()


我的代码:

dict_user = {}

def order_input ():
    while True:
        print ('|--- 新建用户:N/n ---|')
        print ('|--- 登录用户:E/e ---|')
        print ('|--- 退出程序:Q/q ---|')
        order = input('|--- 请输入指令代码:')
        if order.isalpha():
            if order == 'N' or order == 'n':
                name = input('请输入用户名:')
                while name in dict_user.keys():
                    name = input('此用户名已经被使用,请重新输入:')
                else:
                    password = input('请输入密码:')
                    dict_user[name] = password
                    print('注册成功,赶紧试试登陆吧\n')

            elif order == 'E' or order == 'e':
                name = input('请输入用户名:')
                while name not in dict_user.keys():
                    name = input('您输入的用户名不存在,请重新输入:')
                else:
                    password = input('请输入密码:')
                    if password == dict_user[name]:
                        print ('欢迎进入XXOO系统,请点击右上角的X结束程序!')
                        break
                    else:
                        print ('密码错误!')

            elif order == 'Q' or order == 'q':
                break

            else :
                print ('|--- 输入有误!请重新输入! ---|\n')

        else :
            print ('|--- 输入有误!请重新输入! ---|\n')


order_input()
最佳答案
2020-9-13 22:48:54
本帖最后由 sunrise085 于 2020-9-13 22:55 编辑

现阶段是学习过程,所能接触到的程序最大也不过几百行代码。
真正编写大型程序的时候几万几十万行代码,写在一个函数中实现,如何调试?
大型程序也不是一个人完成的,都是分成若干个模块,一个团队甚至几个团队共同编写的,怎么可能把所有内容写在一个函数中,当然是需要每个模块写成一个函数或者一个文件,这样既方便任务峰,也方便调试,还可以划分责任,还有就是后来者能够很方便的看到那个模块是干什么的
再者,大型程序中,都有很多功能模块是重复代码,这么分模块编程,能够重复利用,否则在很多地方需要多次出现相同或类似的代码,增加程序的代码量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-13 22:44:42 | 显示全部楼层
解耦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-13 22:48:54 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-13 22:55 编辑

现阶段是学习过程,所能接触到的程序最大也不过几百行代码。
真正编写大型程序的时候几万几十万行代码,写在一个函数中实现,如何调试?
大型程序也不是一个人完成的,都是分成若干个模块,一个团队甚至几个团队共同编写的,怎么可能把所有内容写在一个函数中,当然是需要每个模块写成一个函数或者一个文件,这样既方便任务峰,也方便调试,还可以划分责任,还有就是后来者能够很方便的看到那个模块是干什么的
再者,大型程序中,都有很多功能模块是重复代码,这么分模块编程,能够重复利用,否则在很多地方需要多次出现相同或类似的代码,增加程序的代码量

评分

参与人数 3荣誉 +15 鱼币 +10 贡献 +9 收起 理由
永恒的蓝色梦想 + 5 + 5 + 3
nizitao + 5 + 5 + 3 支持
张冯的小能豆 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 6 反对 0

使用道具 举报

发表于 2020-9-13 22:52:06 | 显示全部楼层
定义函数,方便重复调用某一功能,代码简洁,小段体会不到,写个几千行才会点感觉
而且便于后期维护,特别是大量代码时,BUG都找不到在哪,头秃,分开定义功能函数起码能排除某些确定的函数代码是无误的
便于其他人理解代码的意思,否则一大坨在那,看不懂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 23:29:07 | 显示全部楼层
函数有 松耦合 和 紧耦合
松耦合 代表两个函数之间尽量减少不必要的关联
紧耦合 代表两个函数之间缺一不可

将一个项目写成多个模块或者函数有利于整体的修改和调用
你想,如果后期你要修改一个元素或者其中一个功能,让你重构或者说重写一整篇代码,工作量是非常大的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 23:55:23 | 显示全部楼层
更好的复用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-14 07:48:13 | 显示全部楼层
功能和功能放一起,流程和流程放一起,后台和后台放一起,这样各个部门才能协调。

不能说大公司就一个部门吧?

得有前端设计,逻辑运算,后台数据处理才算完整的程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-18 15:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表