# 我的python项目 **Repository Path**: begit/my-python-project ## Basic Information - **Project Name**: 我的python项目 - **Description**: 智原_我的python项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2021-11-17 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 联系方式 有任何问题欢迎加群交流学习。 ![image-20230112221941797](README.assets/image-20230112221941797.png) # 办公自动化项目 视频:https://www.bilibili.com/video/BV11Y411m7Bu/?spm_id_from=333.999.0.0 代码地址:https://gitee.com/begit/my-python-project/tree/master/Python%E5%8A%9E%E5%85%AC%E8%87%AA%E5%8A%A8%E5%8C%96 # 爬虫项目 代码:https://gitee.com/begit/my-python-project/tree/master/pachong-%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE # 用户&学生&员工管理 https://gitee.com/begit/my-python-project/tree/master/mangement-%E7%AE%A1%E7%90%86%E7%B1%BBCRUD%E9%A1%B9%E7%9B%AE # 键盘鼠标自动控制 https://gitee.com/begit/my-python-project/tree/master/payautogui_test-%E9%BC%A0%E6%A0%87%E9%94%AE%E7%9B%98%E8%87%AA%E5%8A%A8%E6%8E%A7%E5%88%B6 # 图片内容识别 代码:https://gitee.com/begit/my-python-project/tree/master/tesseract-%E5%9B%BE%E7%89%87%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB # 海龟作图 代码:https://gitee.com/begit/my-python-project/tree/master/turtle-%E6%B5%B7%E9%BE%9F%E4%BD%9C%E5%9B%BE # 软件破解 https://www.yuque.com/docs/share/f95659fa-c4c9-4817-b6c6-e151e32718d4 ## 优质学习资源推荐 (本站)Python教程-C语言中文网: https://gitee.com/begit/my-python-project/tree/master/Python%E6%95%99%E7%A8%8B-C%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91 (本站)Python教程-入门到提升: https://gitee.com/begit/my-python-project/tree/master/Python%E6%95%99%E7%A8%8B-%E5%85%A5%E9%97%A8%E5%88%B0%E6%8F%90%E5%8D%87 (本站)Python教程-100-Days: https://gitee.com/begit/my-python-project/tree/master/Python%E6%95%99%E7%A8%8B-100-Days 菜鸟教程: https://www.runoob.com/python3/python3-tutorial.html w3cschool-爬虫: https://www.w3cschool.cn/python3/ 廖雪峰python: https://www.liaoxuefeng.com/wiki/1016959663602400 # Python创始人背景 ![image-20220415192430263](README.assets/image-20220415192430263.png) ![image-20220415204159469](README.assets/image-20220415204159469.png) ![image-20220415211105347](README.assets/image-20220415211105347.png) ![image-20220415211411311](README.assets/image-20220415211411311.png) ![image-20220415211426326](README.assets/image-20220415211426326.png) ![image-20220415193108333](README.assets/image-20220415193108333.png) https://www.tiobe.com/tiobe-index ![img](README.assets/d70d6a131645475d96de65c235cfc80e.png) # Python特点 ![image-20211114000219262](README.assets/image-20211114000219262.png) ![image-20211114000552248](README.assets/image-20211114000552248.png) ![image-20211114000758272](README.assets/image-20211114000758272.png) ![image-20211114001111737](README.assets/image-20211114001111737.png) Python是一个“优雅”、“明确”、“简单”的编程语言。 - 学习曲线低,非专业人士也能上手 - 开源系统,拥有强大的生态圈 - 解释型语言,完美的平台可移植性 - 支持面向对象和函数式编程 - 能够通过调用C/C++代码扩展功能 - 代码规范程度高,可读性强 # Python应用领域 ![image-20211114001310545](README.assets/image-20211114001310545.png) 后端编程语言:python,java,C++,C# 网络:TCP/IP,5G(自动驾驶,区块链,元宇宙,远程医疗) 前端:html,css,js,vue 1.爬虫。 2.大数据分析。 3.机器学习,人工智能的基础语言。 ##语言特点pythonVSjava 区别: 1.Python比Java简单,学习成本低,开发效率高 2.Java运行效率高于Python,尤其是纯Python开发的程序,效率低 3.Java相关资料多,尤其是中文资料 6.Java偏向于商业开发,Python适合于数据分析 7.Java是一种静态类型语言,Python是一种动态类型语言 8.Java中的所有变量需要先声明(类型)才能使用,Python中的变量不需要声明类型 9.Java编译以后才能运行,Python直接就可以运行; 10.JAVA 里的块用大括号对包括,Python 以冒号 + 四个空格缩进表示。 11.JAVA 的类型要声明,Python 的类型不需要。 12.JAVA 每行语句以分号结束,Python 可以不写分号。 13.实现同一功能时,JAVA 要敲的键盘次数一般要比 Python 多。 目前几个比较流行的领域,Python都有用武之地。 - 云基础设施 - Python / Java / Go - DevOps - Python / Shell / Ruby / Go - 网络爬虫 - Python / PHP / C++ - 数据分析挖掘 - Python / R / Scala / Matlab - 机器学习 - Python / R / Java / Lisp 作为一名Python开发者,主要的就业领域包括: - Python服务器后台开发 / 游戏服务器开发 / 数据接口开发工程师 - Python自动化运维工程师 - Python数据分析 / 数据可视化 / 大数据工程师 - Python爬虫工程师 - Python聊天机器人开发 / 图像识别和视觉算法 / 深度学习工程师 # Python就业形势 ![image-20220415202034709](README.assets/image-20220415202034709.png) ![image-20220415203710900](README.assets/image-20220415203710900.png) https://www.jobui.com/salary/kunming-python/ ![Python招聘需求及薪资待遇Top 10](README.assets/python-top-10.png) ![](README.assets/python-bj-salary.png) ![](README.assets/python-salary-chengdu.png) # 初学者的几个建议 - Practice makes perfect. - All experience comes from mistakes. - Make English as your working language. # 开发环境准备 ![image-20211114001452728](README.assets/image-20211114001452728.png) ![image-20211114001825656](README.assets/image-20211114001825656.png) ![image-20211114002208716](README.assets/image-20211114002208716.png) ![image-20211114002000720](README.assets/image-20211114002000720.png) ![image-20211114002818836](README.assets/image-20211114002818836.png) ``` Python之禅 by Tim Peters 优美胜于丑陋(Python 以编写优美的代码为目标) 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似) 简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现) 复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁) 扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套) 间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题) 可读性很重要(优美的代码是可读的) 即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上) 不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码) 当存在多种可能,不要尝试去猜测 而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法) 虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido ) 做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量) 如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准) 命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召) ``` 退出,exit()或ctrl+Z回车。 ![image-20211114003446510](README.assets/image-20211114003446510.png) ![image-20220415194558333](README.assets/image-20220415194558333.png) ![image-20220415194617259](README.assets/image-20220415194617259.png) ![image-20220415194856599](README.assets/image-20220415194856599.png) ![image-20220416110045988](README.assets/image-20220416110045988.png) ![image-20220415195624356](README.assets/image-20220415195624356.png) ![image-20211114115754486](README.assets/image-20211114115754486.png) ## 汉化菜单 打开settings(设置),然后在里面搜索plugins(插件)。 进入界面之后,点击中上方的marketplace(市场),搜索"chinese"。 弹出来的第一个,作者是JetBrains官方出的插件,点击安装。 重启之后,界面就变成下图的汉化版了!!超级方便,超级安全!! 如果想关闭也很简单,点击marketplace旁边的已安装,把√叉掉就可以了。 如果通过自己的插件市场不能正常汉化,可以去下面网站下载 https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/ ![image-20211120205714876](README.assets/image-20211120205714876.png) ![image-20211120205049506](README.assets/image-20211120205049506.png) ![image-20211120205950953](README.assets/image-20211120205950953.png) 重启生效 ![image-20211120205741915](README.assets/image-20211120205741915.png) ———————————————— 版权声明:本文为CSDN博主「小晓酱手记」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/sinat_26811377/article/details/106182672 ## 基础语法 ![image-20211114120101493](README.assets/image-20211114120101493.png) ``` #-*- codeing = utf-8 -*- #@Time: ${DATE} ${TIME} #@Author : GongXL #@File: ${NAME}.py #@Software: ${PRODUCT_NAME} ``` ## 励志公式 ## ![image-20220312085339000](README.assets/image-20220312085339000.png) 当前版本所有能用的关键词 ```python >>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] >>> ``` 格式化输出 ```python # -*- codeing = utf-8 -*- # @Time: 2021/11/14 12:03 # @Author : GongXL # @File: demo1.py # @Software: PyCharm age=18 print('我是%d岁'%age) #我是18岁 print('我的名字是%s,我的国籍是%s'%('小王',"中国")) #我的名字是小王,我的国籍是中国 print("www","baidu","com",sep=".") #www.baidu.com ''' helloworld python end ''' print("hello",end="") print("world",end="\t") print("python",end="\n") print("end") ``` 数据类型问题 ```python a=int(input('输入')) print(type(a)) print(id(a))#python的存储结构是个对象,id表示的是内存的唯一地址 print('你输入的是 %d'%a) ``` 运算符问题 ``` 2 // 4 # 除法,得到一个整数 17 % 3 # 取余 2 ** 5 # 乘方 ``` 流程问题 ``` 自动预习查看if/for语句的实现 ``` ## ASCII ``` #!/usr/bin/env python3 # -*- coding: utf-8 -*- # # 1 -255 for i in range(65535): print(i,':',chr(i),' ',end='') if i % 20 == 0: print() print(ord('北')) print(ord('京')) print('\u5317\u4EAC') #北京 ``` ## Unicode ![image-20220422204323448](README.assets/image-20220422204323448.png) # 基础语法 ## 字符串截取编号规则 ![image-20211127203344654](README.assets/image-20211127203344654.png) ## 数据结构特点 ![image-20211123234108470](README.assets/image-20211123234108470.png) ## List ![image-20220423103220326](README.assets/image-20220423103220326.png) ## Dict ![image-20220423132757757](README.assets/image-20220423132757757.png) ![image-20220423112332606](README.assets/image-20220423112332606.png) ## 变量交换 ``` # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 用户输入 x = input('输入 x 值: ') y = input('输入 y 值: ') # 创建临时变量,并交换 temp = x x = y y = temp print('交换后 x 的值为: {}'.format(x)) print('交换后 y 的值为: {}'.format(y)) ``` ``` # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 用户输入 x = input('输入 x 值: ') y = input('输入 y 值: ') # 不使用临时变量 x,y = y,x print('交换后 x 的值为: {}'.format(x)) print('交换后 y 的值为: {}'.format(y)) ``` ## 折半查找 ![img](README.assets/Binary_search_into_array.png) 概念: 二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 算法思想: 因为效率比较好,时间复杂度是对数级别。 1.需要列表有序。 2.关键中心索引下标计算:mid=l+(h-l)/2。 3.用递归算法。 ``` # 返回 x 在 arr 中的索引,如果不存在返回 -1 def binarySearch (arr, l, r, x): # 基本判断 if r >= l: mid = int(l + (r - l)/2) # 元素整好的中间位置 if arr[mid] == x: return mid # 元素小于中间位置的元素,只需要再比较左边的元素 elif arr[mid] > x: return binarySearch(arr, l, mid-1, x) # 元素大于中间位置的元素,只需要再比较右边的元素 else: return binarySearch(arr, mid+1, r, x) else: # 不存在 return -1 # 测试数组 arr = [ 2, 3, 4, 10, 40 ] x = 10 # 函数调用 result = binarySearch(arr, 0, len(arr)-1, x) if result != -1: print ("元素在数组中的索引为 %d" % result ) else: print ("元素不在数组中") ``` ## 排序算法 ### 冒泡排序 ![img](README.assets/bubbleSort.gif) 概念: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 算法思想: 1.冒泡排序,两两比较,每比较一趟,得到一个最大值。 2.经过,假设n个数,共比较n-1趟后,正个列表有序。 ```python def bubbleSort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): # Last i elements are already in place for j in range(0, n-i-1): if arr[j] > arr[j+1] : arr[j], arr[j+1] = arr[j+1], arr[j] arr = [64, 34, 25, 12, 22, 11, 90] bubbleSort(arr) print ("排序后的数组:") for i in range(len(arr)): print ("%d" %arr[i]), ``` ### 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 ![img](README.assets/insertionSort.gif) ```python def insertionSort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1 while j >=0 and key < arr[j] : arr[j+1] = arr[j] j -= 1 arr[j+1] = key arr = [12, 11, 13, 5, 6] insertionSort(arr) print ("排序后的数组:") for i in range(len(arr)): print ("%d" %arr[i]) ``` ### 选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 ### ![img](README.assets/selectionSort.gif) ```python import sys A = [64, 25, 12, 22, 11] for i in range(len(A)): min_idx = i for j in range(i+1, len(A)): if A[min_idx] > A[j]: min_idx = j A[i], A[min_idx] = A[min_idx], A[i] print ("排序后的数组:") for i in range(len(A)): print("%d" %A[i]), ``` ## if的条件注意 非0的值会被当做True对待 ```python #!/usr/bin/python3 var1 = 100 if var1: print ("1 - if 表达式条件为 true") print (var1) var2 = 0 if var2: print ("2 - if 表达式条件为 true") print (var2) print ("Good bye!") ``` ## while和for都可以和else合用 while 循环使用 else 语句 如果 while 后面的条件语句为 false 时,则执行 else 的语句块。 语法格式如下: ``` while : else: ``` expr 条件语句为 true 则执行 statement(s) 语句块,如果为 false,则执行 additional_statement(s)。 for循环的一般格式如下: ``` for in : else: ``` ``` >>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 Runoob 3 Taobao 4 QQ ``` ## 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 ![image-20211218192257390](README.assets/image-20211218192257390.png) ## 面向对象 本节我们重点研究对象和类的概念。 - **对象**:对象是类的一个实例(**对象不是找个女朋友**),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 - **类**:类是一个模板,它描述一类对象的行为和状态。 下图中**男孩(boy)**、**女孩(girl)**为**类(class)**,而具体的每个人为该类的**对象(object)**: ![img](README.assets/object-class.jpg) 下图中**汽车**为**类(class)**,而具体的每辆车为该**汽车**类的**对象(object)**,对象包含了汽车的颜色、品牌、名称等。 ![img](README.assets/class-object2020-10-27.png) ### 类 类可以看成是创建 Python 对象的模板。 ![img](README.assets/20210105-java-object-1.png) ### 对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 ### 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例。这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的东西。在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定义出一个叫做“类”的东西。 ### 多态 https://www.cnblogs.com/feeland/p/4419121.html  多态的好处就是,当我们需要传入更多的子类,调用方只管调用,不管细节,而当我们新增一种Person的子类时,只要确保新方法编写正确,而不用管原来的代码。这就是著名的“开闭”原则: - 对扩展开放(Open for extension):允许子类重写方法函数 - 对修改封闭(Closed for modification):不重写,直接继承父类方法函数 ### 抽象类接口 https://www.cnblogs.com/weihengblog/p/8528967.html 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能. 实践中,继承的第一种含义意义并不很大,甚至常常是有害的。因为它使得子类与基类出现强耦合。 继承的第二种含义非常重要。它又叫“接口继承”。 接口继承实质上是要求“做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化。 **什么是抽象类** *与java一样,python也有抽象类的概念但是同样需要借助模块实现,**抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化*** **为什么要有抽象类** *如果说**类是从**一堆**对象**中抽取相同的内容而来的,那么**抽象类**就**是从**一堆**类**中抽取相同的内容而来的,内容包括数据属性和函数属性。*   *比如我们有香蕉的类,有苹果的类,有桃子的类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉,要么是吃一个具体的桃子。。。。。。你永远无法吃到一个叫做水果的东西。* *从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的。*   *从实现角度来看,抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且子类必须实现抽象方法。这一点与接口有点类似,但其实是不同的,即将揭晓答案* ### Python,JAVA面向区别 相同点: 1.都有class类。 2.都有对象实例。 3.都可以继承,封装,多态。 不同点: 1.java是单继承。 1.python支持多继承。 方法名同,默认调用的是在括号中参数位置排前父类的方法。 2. 类的私有方法 __private_method:两个下划线开头, 声明该方法为私有方法,只能在类的内部调用 , 不能在类的外部调用。self.__private_methods。 3.多态上,python提供了一些专有方法可被重载。 # 基础语法练习 https://gitee.com/begit/my-python-project/tree/master/Python%E5%AE%9E%E4%BE%8B%E4%BD%9C%E4%B8%9A # 学生信息管理系统 代码:https://gitee.com/begit/my-python-project/tree/master/mangement/stusystem ![image-20211113233611012](README.assets/image-20211113233611012.png) ![image-20211113233642941](README.assets/image-20211113233642941.png) ![image-20211113233728013](README.assets/image-20211113233728013.png) ## 录入 ![image-20211113233807445](README.assets/image-20211113233807445.png) ## 统计 ![image-20211113233829878](README.assets/image-20211113233829878.png) ## 查找 ![image-20211113233949536](README.assets/image-20211113233949536.png) ## 删除 ![image-20211113234022677](README.assets/image-20211113234022677.png) ## 修改 ![image-20211113234100651](README.assets/image-20211113234100651.png) ## 统计 ![image-20211113234132974](README.assets/image-20211113234132974.png) ## 排序 ![image-20211113234202724](README.assets/image-20211113234202724.png) ![image-20211113234216327](README.assets/image-20211113234216327.png) ## 退出 ![image-20211113234246972](README.assets/image-20211113234246972.png) ## 系统设计 ![](README.assets/image-20211113234341305.png) ![ ](README.assets/image-20211113234505855.png) ![image-20211113234633352](README.assets/image-20211113234633352.png) ## 程序主菜单实现 ![image-20211115220721613](README.assets/image-20211115220721613.png) ![image-20211115220753514](README.assets/image-20211115220753514.png) # 常见问题 ## pip超时 一) 1、设置超时时间 pip --default-timeout=1000 install -U 模块名 例如 pip --default-timeout=1000 install -U matplotlib 来下载matplotlib,让它的延迟检测时间变长。 2、使用镜像网址来代替 国内清华大学的源:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:https://pypi.douban.com/simple 中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple 阿里云:https://mirrors.aliyun.com/pypi/simple/ 华为云:https://mirrors.huaweicloud.com/repository/pypi/simple 例如 pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 二) 升级pip版本 pip install --upgrade pip -i https://pypi.douban.com/simple # 赞助 如果内容对您有帮助,或有需要欢迎加群交流学习。 也感谢您的赞助。 ![image-20230113204806410](README.assets/image-20230113204806410.png)