V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cx524541577
V2EX  ›  程序员

大佬们来围观一下小白第一次写的垃圾代码(真的第一次写,毫无基础,边写边百度), Python 向。

  •  
  •   cx524541577 · 2022-06-13 16:56:00 +08:00 · 5949 次点击
    这是一个创建于 654 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们好,简单的说明一下目的,在用户选择的目录下创建固定的文件夹,根据当前时间以及项目名称创建文件夹如: 20220613_V2EX 拍摄项目 camera 20220613-A7S3 20220613-RED V-RAPTOR audio vedio fx sound fx ....

    当然现在是半成品,期待大佬们点评现在的代码,有什么不足,以及分享思路,万分感谢!!!

    链接: https://pan.baidu.com/s/1WFj3hHCCeuCStXSb3aB5Tw 提取码: wh56

    59 条回复    2022-06-15 18:29:40 +08:00
    yfugibr
        1
    yfugibr  
       2022-06-13 16:58:41 +08:00   ❤️ 14
    看得出来,居然把代码发百毒
    AS4694lAS4808
        2
    AS4694lAS4808  
       2022-06-13 17:00:25 +08:00
    至少来个码云吧
    learningman
        3
    learningman  
       2022-06-13 17:05:30 +08:00 via Android
    这 ZJM ,一点看的预言都没有
    ansonsiva
        4
    ansonsiva  
       2022-06-13 17:09:56 +08:00   ❤️ 4
    百度云,Hummmmm......
    好像看到了 10 年前的我

    我来给你发吧
    equationl
        5
    equationl  
       2022-06-13 17:10:20 +08:00
    v2 支持 markdown ,可以直接贴代码。
    或者放 github ,实在上不了 github ,如一楼说的,至少给个 gitee 吧。用百度网盘是否有点...

    哦。点开看了一下,原来百度支持预览 .py 文件啊 ,那没事了
    equationl
        6
    equationl  
       2022-06-13 17:14:24 +08:00
    好久没写 python 了,但是我没记错的话,python 推荐的都是小写+下划线的命名风格吧。

    楼主这个各种风格的命名风格混搭有点难受的
    cx524541577
        7
    cx524541577  
    OP
       2022-06-13 17:18:03 +08:00
    @equationl 谢谢大佬指教,因为边百度边写的可能有些风格不太相同,感谢大佬学到的小写加下划线命名的规范
    cx524541577
        8
    cx524541577  
    OP
       2022-06-13 17:18:31 +08:00
    @ansonsiva 谢谢大佬的鼓励以及帮助
    cx524541577
        9
    cx524541577  
    OP
       2022-06-13 17:19:43 +08:00
    @learningman 谢谢大佬指正,因为不太懂英文和才开始学习,所以命名有些不规范,下次会注意的,谢谢大佬
    cx524541577
        10
    cx524541577  
    OP
       2022-06-13 17:20:30 +08:00   ❤️ 1
    @AS4694lAS4808 刚刚试了一下码云好像需要审核两天,所以没办法,谢谢大佬
    equationl
        11
    equationl  
       2022-06-13 17:22:12 +08:00   ❤️ 1
    @cx524541577 推荐用 IDE 写代码,IDE 都会有提示。

    比如 pycharm
    cx524541577
        12
    cx524541577  
    OP
       2022-06-13 17:23:05 +08:00
    @equationl 好的,感谢大佬我现在去下载
    jesson
        13
    jesson  
       2022-06-13 17:26:01 +08:00   ❤️ 1
    ```python

    import tkinter as tk #导入 GUI 模块 tk
    import tkinter.ttk as ttk #导入 GUI 模块 ttk
    import sys
    import webbrowser
    import time #导入时间模块



    ZJM = tk.Tk()
    ZJM.geometry('800x600+500+200')
    ZJM.title('工程创建助手')

    def GYZS():
    GYZSwindow = tk.Tk()
    GYZSwindow.geometry('300x150+750+400')
    GYZSwindow.resizable(False, False)
    GYZSwindow.title('关于软件')
    tk.Label(GYZSwindow, text='\n 工程创建助手 V1.0',font=('','16'),foreground='#C38B5A').pack()
    # 创建一个主框架
    frm = tk.Frame(GYZSwindow)
    frm.pack()
    # 基于 frm 框架创建一个左边的子框架
    frm_t = tk.Frame(frm)
    # 基于 frm 框架创建一个右边的子框架
    frm_b = tk.Frame(frm)
    frm_t.pack(side='top') # pack 中的 side 方法是将 frm_l,frm_r 两个子框架按照左或右的方向添加到 frm 上
    frm_b.pack(side='bottom')

    # 这里的三个 label 就是在我们创建的 frame 上定义的 label 部件,还是以容器理解,就是容器上贴了标签,
    # 来指明这个是什么,解释这个容器。
    tk.Label(frm_t, text='\n 本软件旨在帮助后期人员\n 快速并标准化创建管理工程\n 使用教程请点击菜单栏帮助按钮\n',font=('','11')).pack()
    tk.Label(frm_b, text='by CuiQiangQiang',foreground='#DFE0DF').pack()

    GYZSwindow.mainloop()

    def quit():
    sys.exit()

    def llq():
    webbrowser.open("https://space.bilibili.com/120602530?spm_id_from=333.337.0.0")


    def sz():
    SZwindow = tk.Tk()
    SZwindow.geometry('600x350+600+350')
    SZwindow.resizable(False, False)
    SZwindow.title('设置')
    #基于 SZwindow 框架创建三个上中下的子框架
    frm_t = tk.Frame(SZwindow,height=30,width=500)
    frm_m = tk.Frame(SZwindow,height=160,width=500)
    frm_b = tk.Frame(SZwindow,height=60,width=500)
    frm_t.pack(side='top')
    frm_m.pack(side='top')
    frm_b.pack(side='bottom')

    #基于 frm_m 框架创建左中右三个子框架
    frm_wenben = tk.Frame(frm_m,height=180,width=100)
    frm_wenbenkuang = tk.Frame(frm_m,height=180,width=270)
    frm_anniu = tk.Frame(frm_m,height=40,width=130)
    frm_br = tk.Frame(frm_b,height=60,width=100)
    frm_br2 = tk.Frame(frm_b,height=60,width=400)
    frm_wenben.pack(side='left')
    frm_wenbenkuang.pack(side='left')
    frm_anniu.pack(side='right')
    frm_br.pack(side='right')
    frm_br2.pack(side='left')

    #基于 frm_anniu 框架右下角创建两个按钮
    tk.Button(frm_br, text='关闭', command=SZwindow.destroy,width=8,height=2).pack(side='right',padx=10)
    tk.Button(frm_br,text='保存',command=SZwindow.destroy,width=8,height=2).pack(side='right')

    # 基于 frm_anniu 框架右下角创建两个按钮
    tk.Button(frm_anniu, text='选择文件夹', command=SZwindow.destroy, width=8, height=1).pack(pady=30)
    tk.Button(frm_anniu, text='选择文件夹', command=SZwindow.destroy, width=8, height=1).pack()

    #基于 frm_wenben 框架创建一个 label 部件
    label_wenben = tk.Label(frm_wenben,text='工程目录位置:',font=('','12'),foreground='#000000').pack(pady=28)
    label1_wenben = tk.Label(frm_wenben, text='软件工程位置:', font=('', '12'), foreground='#000000').pack()

    #基于 frm_wenbenkuang 框架创建一个文本框部件
    text_wenben = tk.Entry(frm_wenbenkuang,textvariable='').pack(pady=25)
    text_wenben = tk.Entry(frm_wenbenkuang,textvariable='').pack()




    print(SZwindow.winfo_screenwidth())











    menubar = tk.Menu(ZJM)
    filemenu = tk.Menu(menubar, tearoff=0)
    menubar.add_cascade(label='工程创建助手', menu=filemenu),\
    filemenu.add_command(label='关于工程创建助手', command=GYZS),\
    filemenu.add_separator(),\
    filemenu.add_command(label='设置',command=sz),\
    filemenu.add_separator(),\
    filemenu.add_command(label='帮助',command=llq),\
    filemenu.add_separator(),\
    filemenu.add_command(label='关闭',command=quit),\


    ZJM.config(menu=menubar)

    #创建一个 label 部件,并设置其文本内容为当前时间,动态显示时间
    def show_time():
    time_now = time.strftime(' 当前日期与时间:'+'%Y 年%m 月%d 日 %H:%M:%S',time.localtime(time.time()))
    label_time.config(text=time_now)
    label_time.after(1000,show_time)

    #创建一个 label 部件,并设置其文本内容为当前时间,动态显示时间
    label_time = tk.Label(ZJM, font=('',12),fg='#000000',bd=1, relief=tk.SUNKEN, anchor=tk.W)
    label_time.pack(side=tk.BOTTOM, fill=tk.X)
    show_time()




    ZJM.mainloop()

    ```
    jesson
        14
    jesson  
       2022-06-13 17:27:30 +08:00
    尴尬 这 Markdown 竟然不支持
    sinnosong1
        15
    sinnosong1  
       2022-06-13 17:30:10 +08:00   ❤️ 1
    你这还不如看看 winform ,那个还支持拖拽,比你手动设置位置强太多了。
    anonydmer
        16
    anonydmer  
       2022-06-13 17:33:08 +08:00   ❤️ 2
    看了下楼主两年前的帖子,不是程序员,当时还在问 python 代码怎么写,现在已经可以自己写出来了,精神值得钦佩。
    cx524541577
        17
    cx524541577  
    OP
       2022-06-13 17:36:41 +08:00
    @sinnosong1 谢谢大佬,刚百度了一下( WinForm ,是·Net 开发平台中对 Windows Form 的一种称谓。),可是我用的是 MAC 啊,而且想后期一直学习 python 下去,因为 davinci resolve (剪辑软件)是支持 python 脚本的。这是我学习的动力
    cx524541577
        18
    cx524541577  
    OP
       2022-06-13 17:37:15 +08:00
    @jesson 不明觉厉
    cx524541577
        19
    cx524541577  
    OP
       2022-06-13 17:40:52 +08:00
    @anonydmer 感谢大佬回复,当时网上的人说 python 比较简单,比较像人类语言,但是问了一下,看不太懂,所以就没学,这次学习的动力是,使用了剪辑软件内别人开发的脚本,比手动操作省太多时间了,于是这次就想先下手试试看!
    xujiang
        20
    xujiang  
       2022-06-13 17:59:57 +08:00
    加油
    lopda
        21
    lopda  
       2022-06-13 18:06:52 +08:00
    加油~
    herich
        22
    herich  
       2022-06-13 18:10:32 +08:00   ❤️ 11
    吓我一跳,还以为是我的代码被贴上来了
    sivacohan
        23
    sivacohan  
       2022-06-13 18:15:46 +08:00   ❤️ 6
    挺好的。
    最为初学者来说已经很厉害了。

    如果要提建议的话,那建议你看看 python docstring ,然后给每个函数都增加注释。注释的内容是“这个函数实现什么功能”,不要写“这个函数是怎么实现的”。
    另外一个建议是,增加一个 main 函数,把后面那段没有缩进的代码放到 main 函数去。
    最下面判断 if __name__ == '__main__': main()
    这样写的好处是,如果这些代码想要被其他代码 import ,那这个代码就不会在 import 的时候被执行。用起来比较方便。
    zhujq
        24
    zhujq  
       2022-06-13 18:20:03 +08:00
    666 ,楼主厉害
    Nich0la5
        25
    Nich0la5  
       2022-06-13 18:38:33 +08:00
    可以去学习一下 pep8 规范
    goodryb
        26
    goodryb  
       2022-06-13 19:04:38 +08:00
    能跑起来,并且达到你预期的要求,就很不错了。
    zhengsidao
        27
    zhengsidao  
       2022-06-13 20:55:48 +08:00
    OP 多大啦,挺有意思的
    0x2CA
        28
    0x2CA  
       2022-06-13 21:24:48 +08:00
    挺好的,我记得我第一写,最复杂的程序是一个 2048 小游戏
    cx524541577
        29
    cx524541577  
    OP
       2022-06-13 21:31:32 +08:00 via iPhone
    @xujiang 谢谢大佬鼓励
    cx524541577
        30
    cx524541577  
    OP
       2022-06-13 21:31:53 +08:00 via iPhone
    @lopda 谢谢大佬鼓励
    cx524541577
        31
    cx524541577  
    OP
       2022-06-13 21:32:27 +08:00 via iPhone
    @herich 哈哈哈哈,大佬过于谦虚啦!
    cx524541577
        32
    cx524541577  
    OP
       2022-06-13 21:35:40 +08:00 via iPhone
    @sivacohan 谢谢大佬鼓励,就是大佬我有一个疑问,还望大佬解答,main 函数是一个盒子是吗?那什么时候需要这个盒子去装东西呢,还有函数到底是什么意思,对他的理解,我有些懵懵懂懂,感谢大佬
    cx524541577
        33
    cx524541577  
    OP
       2022-06-13 21:35:59 +08:00 via iPhone
    @zhujq 谢谢大佬鼓励
    cx524541577
        34
    cx524541577  
    OP
       2022-06-13 21:36:55 +08:00 via iPhone
    @Nich0la5 谢谢大佬赐教,已经记到备忘录上啦!
    cx524541577
        35
    cx524541577  
    OP
       2022-06-13 21:37:15 +08:00 via iPhone
    @goodryb 谢谢大佬鼓励
    reallittoma
        36
    reallittoma  
       2022-06-13 21:40:47 +08:00
    @equationl #5 百度网盘居然能预览代码,真是万万没想到
    cx524541577
        37
    cx524541577  
    OP
       2022-06-13 21:41:03 +08:00 via iPhone   ❤️ 1
    @zhengsidao 感谢大佬回复,98 年的,没上过大学,无论录音,还是拍摄剪辑,还是现在,刚刚看到门槛的编程,都是自学的,还好互联网知识丰富,还有些热心的大佬,对我的帮助都不小。
    cx524541577
        38
    cx524541577  
    OP
       2022-06-13 21:41:29 +08:00 via iPhone
    @0x2CA 谢谢大佬鼓励
    cx524541577
        39
    cx524541577  
    OP
       2022-06-13 21:43:27 +08:00 via iPhone
    @reallittoma 哈哈哈哈,代码库界的搅屎棍
    akaHenry
        40
    akaHenry  
       2022-06-14 03:22:27 +08:00
    @cx524541577

    自学能力不错. 值得鼓励.

    编程入门从 Python 开始, 是非常合适的. 先从 GUI 摸索, 也是对的. 反馈及时.

    1. 建议先掌握 Python 语法和 PEP8 等语言规范.
    2. 注册个 github, 掌握 git 基本使用(不复杂). 用网盘管理代码, 无法跟踪版本修改记录.
    3. 也可以学一点 Flutter, 建议从 Flutter Web 开始. 比 JS+HTML 学习, 理解会更快. Flutter 也是 GUI 编程范畴, 这样你学起来, 不会痛苦.
    4. 非专业自学的, 建议都从 GUI 编程 or Web 入门. Flutter 非常合适. 语法也很简单.


    https://github.com/hhstore/blog/labels/Python
    https://github.com/hhstore/blog/labels/Flutter

    可以看我的博客, 关于 Python 和 Flutter 的专题.

    加油.
    woctordho
        41
    woctordho  
       2022-06-14 03:35:24 +08:00 via Android
    你应该已经知道怎么装 webbrowser 之类的包了吧,然后可以了解一下 black ( https://github.com/psf/black ),它可以自动帮你整理代码的格式,比如哪里加个空格会比较好看

    还有 flake8 ( https://github.com/PyCQA/flake8 ),它可以帮你检查代码里写得不好的地方
    learningman
        42
    learningman  
       2022-06-14 08:10:46 +08:00 via Android
    @woctordho webbrowser 是个内置的包
    sivacohan
        43
    sivacohan  
       2022-06-14 09:29:23 +08:00
    @cx524541577
    “main 函数” 也是一个 “函数” 和你自己写的 “llq 函数” 没有任何区别。
    main 函数是一个约定俗成的东西,一般需要启动运行的程序,都是以 main 函数作为入口。
    zhangzEric
        44
    zhangzEric  
       2022-06-14 09:36:20 +08:00
    OP 加油!大家都是从新手慢慢摸爬滚打过来的,持续学习,会越来越好的👍
    AS4694lAS4808
        45
    AS4694lAS4808  
       2022-06-14 10:37:40 +08:00
    @cx524541577 不好意思,确实没点开并且低估了百度云,没想到居然支持 py 预览。主要是楼上说的命名问题吧,实验性的项目只要能跑起来并且大概完成了预期的需求就可以了,加油!
    xrr2016
        46
    xrr2016  
       2022-06-14 11:35:31 +08:00
    赞一个
    ffxrqyzby
        47
    ffxrqyzby  
       2022-06-14 13:29:41 +08:00
    先把 git 搞会吧
    rev1si0n
        48
    rev1si0n  
       2022-06-14 16:42:44 +08:00
    不得不说,看起来挺舒服的
    cx524541577
        49
    cx524541577  
    OP
       2022-06-14 19:45:32 +08:00
    @orzglory 谢谢大佬,这就去关注一波
    cx524541577
        50
    cx524541577  
    OP
       2022-06-14 19:46:03 +08:00
    @woctordho 感谢大佬指点迷津
    cx524541577
        51
    cx524541577  
    OP
       2022-06-14 19:48:29 +08:00
    @sivacohan 谢谢大佬,学到了,函数是指一个独立的可被执行的小串代码,万分感谢大佬指点!!!!谢谢
    cx524541577
        52
    cx524541577  
    OP
       2022-06-14 19:49:23 +08:00
    @zhangzEric

    @AS4694lAS4808

    @xrr2016
    感谢大佬鼓励
    cx524541577
        53
    cx524541577  
    OP
       2022-06-14 19:50:19 +08:00
    @AS4694lAS4808 哈哈哈哈,没关系的大佬,没啥不好义思的,指出问题也是对我的帮助,万分感谢
    cx524541577
        54
    cx524541577  
    OP
       2022-06-14 19:50:50 +08:00
    @ffxrqyzby 感谢大佬指点
    cx524541577
        55
    cx524541577  
    OP
       2022-06-14 19:52:31 +08:00
    @rev1si0n 感谢大佬回复鼓励
    Louis423Lee
        56
    Louis423Lee  
       2022-06-15 09:17:51 +08:00
    佩服 OP 的自学能力!点赞
    jiangzhizhou
        57
    jiangzhizhou  
       2022-06-15 10:19:47 +08:00
    Google 的 python Style guide
    基本读一遍,然后平时用用 pylint
    https://google.github.io/styleguide/pyguide.html
    jiangzhizhou
        58
    jiangzhizhou  
       2022-06-15 10:21:27 +08:00
    保持一个项目里面一致就行了。用哪个不重要
    x1x1
        59
    x1x1  
       2022-06-15 18:29:40 +08:00
    可以再考虑增加一些异常处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1000 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:53 · PVG 03:53 · LAX 12:53 · JFK 15:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.