xuyuanyuanxyy 发表于 2020-9-13 22:37:06

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

题目是:


这有什么讲究吗


小甲鱼的代码:

user_data = {}

def new_user():
    prompt = '请输入用户名:'
    while True:
      name = input(prompt)
      if name in user_data:
            prompt = '此用户名已经被使用,请重新输入:'
            continue
      else:
            break

    passwd = input('请输入密码:')
    user_data = 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 = 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:
                        print ('欢迎进入XXOO系统,请点击右上角的X结束程序!')
                        break
                  else:
                        print ('密码错误!')

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

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

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


order_input()

kogawananari 发表于 2020-9-13 22:44:42

解耦

sunrise085 发表于 2020-9-13 22:48:54

本帖最后由 sunrise085 于 2020-9-13 22:55 编辑

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

疾风怪盗 发表于 2020-9-13 22:52:06

定义函数,方便重复调用某一功能,代码简洁,小段体会不到,写个几千行才会点感觉
而且便于后期维护,特别是大量代码时,BUG都找不到在哪,头秃,分开定义功能函数起码能排除某些确定的函数代码是无误的
便于其他人理解代码的意思,否则一大坨在那,看不懂啊

小莫非 发表于 2020-9-13 23:29:07

函数有 松耦合 和 紧耦合
松耦合 代表两个函数之间尽量减少不必要的关联
紧耦合 代表两个函数之间缺一不可

将一个项目写成多个模块或者函数有利于整体的修改和调用
你想,如果后期你要修改一个元素或者其中一个功能,让你重构或者说重写一整篇代码,工作量是非常大的

Stubborn 发表于 2020-9-13 23:55:23

更好的复用

heidern0612 发表于 2020-9-14 07:48:13

功能和功能放一起,流程和流程放一起,后台和后台放一起,这样各个部门才能协调。

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

得有前端设计,逻辑运算,后台数据处理才算完整的程序。
页: [1]
查看完整版本: 一个小功能 一个函数可以搞定 为啥大佬们都喜欢分成好多