python
陈陈的糖罐子
一个人工智能的菜鸟
展开
-
DAY13、小结&课后作业
小结课后问答题课后实操题原创 2021-10-20 18:20:37 · 54 阅读 · 0 评论 -
DAY13、贪婪模式与非贪婪模式
概述Python里面数量词默认是贪婪的,总是尝试匹配尽可能多的字符,非贪婪则相反,总是在尝试匹配尽可能少的字符。在"*","?","+","{m,n}"后面加上?,使得贪婪变成非贪婪实操贪婪模式非贪婪模式案例默认为贪婪模式改为非贪婪模式...原创 2021-10-20 17:51:06 · 89 阅读 · 0 评论 -
DAY13、re中的编译函数
re模块re.compile方法compile将正则表达式模式编译成一个正则表达式对象。reg=re.compile(pattern)result=reg.match(string)等效于result=re.match(pattern,string)使用re.compile()和保存所产生的正则表达式对象重用效率更高。re.search方法search在全文中匹配一次,匹配到就返回语法re.search(pattern,string,flags=0)函数参数说明示例扫描字符串原创 2021-10-20 17:30:37 · 72 阅读 · 0 评论 -
DAY13、分组匹配
re 模块常用的匹配规则-分组匹配|匹配出0-100之间的数字(ab)分组匹配,将括号中字符作为一个分组^有两种含义,以xxxx开头或者否定、取反\num的使用原创 2021-10-20 16:38:02 · 125 阅读 · 0 评论 -
DAY13、转义开头和结尾
re模块常用的匹配规则-原生字符串python字符串中\作为转义字符开头,比如\n表示换行,\t表示tab键,为了表示\本身,再加一个\,称为\形式,在python中表示路径‘G:\py资料\1-上课资料\4-正则表达式课件\html’下面使用正则表达式来匹配路径对比在正则前面加r,表示原生的字符串,python字符串就不转义了。正则表达式里使用’\‘作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符’\’,那么使用编程语言表示的正则表达式里将需要4个反斜杠’’。在P原创 2021-10-20 15:45:25 · 105 阅读 · 0 评论 -
DAY13、正则匹配数量
re模块常用的匹配规则-匹配字符数量实操*匹配前一个字符出现0次或无限次,即可有可无+匹配前一个字符出现1次或者无限次,即至少有1次?匹配前一个字符出现1次或者0次,即要么有一次,要么没有{m}匹配前一个字符出现m次{m,}匹配前一个字符至少出现m次{n,m}匹配前一个字符出现从n到m次...原创 2021-10-19 21:49:18 · 441 阅读 · 0 评论 -
DAY13、正则表达式_规则
re模块常用的匹配规则-匹配字符实操.点的使用,匹配规则是除了换行符以外的字符[]中括号的使用,匹配规则:匹配括号中任一字符字符串的开头必须在中括号中且只能匹配一个\d匹配一个数字,0-9之间\D匹配一个非数字\s匹配一个空格、tab键\S匹配一位非空白字符(tab键)\w匹配一个单词字符,即a-z、A-Z、0-9、_\W匹配一个非单词字符...原创 2021-10-19 21:28:48 · 45 阅读 · 0 评论 -
DAY13、re模块
re.match方法re.match尝试从字符串的起始位置匹配一个规则,匹配成功就返回match对象,否则返回none。可以使用group()获取匹配成功的字符串。注意:匹配成功就返回,所以只匹配一次,匹配到了就立马返回不再匹配后面相同的示例1(无标志位):实操示例2(有标志位)如果同时使用多个标志位使用|分割,比如re.I|re.Mflags可选标志位实操当然,如果match匹配失败,那么group里面什么都没有我们可以使用group(num)或group()原创 2021-10-19 20:48:23 · 47 阅读 · 0 评论 -
DAY13正则表达式
复习知识点原创 2021-10-19 16:00:21 · 70 阅读 · 0 评论 -
DAY12、命令行参数
命令行参数-sys模块在使用python开发脚本,作为一个运维工具,或者其他工具需要接受用户参数运行时,这里就可以用到命令行传参的方式,可以给使用者提供一个比较友好的交互体验。python可以sys模块中的sys.argv来获取命令行参数创建一个test.txt文件argv返回命令行参数是一个列表,第一个元素就是py文件的文件名。如果只想获取参数不需要获取文件名,sys.argv也支持python字符串中的切片,修改代码如下:执行结果sys.argv只提供了比较简单的命令参数获取方原创 2021-10-18 22:30:41 · 59 阅读 · 0 评论 -
DAY12、Python pep8规范
Python pep8原则Guido的主要见解之一是代码读取的次数比写入次数多得多。这里提供的准则旨在提高代码的可读性并使其在各种python代码中保持一致。代码布局缩进:四个空格的缩进(编辑器都可以完成此功能),不要使用tab,更不能混合使用tab和空格缩进每个缩进级别使用4个空格。连续行应使用python的隐式行连接括号,小括号和大括号,或者使用悬挂缩进来垂直对齐包装元素。悬挂缩进不一定是4个空格if语句跨行时,两个字符关键字(比如if)加上一个空格,再加上左括号构成了很好的缩进。后原创 2021-10-18 22:14:39 · 184 阅读 · 0 评论 -
DAY12python内存优化
小整数与大整数对象池python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。python对小整数的定义是[-5,256]这些整数对象是提前建立好的,不会被垃圾回收。原创 2021-10-18 15:56:55 · 136 阅读 · 0 评论 -
DAY12、python中的GC模块
python中的GC模块python中的垃圾回收是以引用计数为主,分代收集为辅导致引用计数+1的情况1、对象被创建2、对象被引用3、对象被作为参数,传入到一个函数中4、对象作为一个元素,存储在容器中导致引用计数-1的情况1、对象的别名被显式销毁2、对象的别名被赋予新的对象3、一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)4、对象所在的容器被销毁,或从容器中删除对象。查看一个对象的引用计数可以查看a对象的引用计数,但是比正常计数大1,因为调用原创 2021-10-18 15:51:53 · 404 阅读 · 0 评论 -
DAY12、引入计数机制
引用计数机制概述Garbage collection(GC)现在的高级语言如java,c#等,都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式。自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患。对于一个字符串、列表、类甚至数值都是对象,且定位简单易用的语言,自然不会让用户去处理如何分配回收内存的问题。python里也同java一样采用了垃圾收集机制,不过不一样的是:Python采用的是引用计数机制为主,标记-清除和分代收集两种机制原创 2021-10-18 11:59:09 · 84 阅读 · 0 评论 -
DAY12、python垃圾回收机制
程序的垃圾回收电脑运行一段时间就会变慢,大家想必都深有体会,对于这种情况各有不同的处理方法:其中,重启的效果最为明显,原因就在于,程序不会永远完美,通过前三种方法无法释放内存资源,而垃圾回收就是为了尽可能的使程序完美。目录:重点难点...原创 2021-10-18 09:48:04 · 43 阅读 · 0 评论 -
DAY11、小结
打开方式:w或r追加:a查看环境变量:os原创 2021-10-18 09:25:05 · 44 阅读 · 0 评论 -
DAY11、模块的制作、发布和安装2
模块的发布平时使用的第三方模块是其他开发者发布出来,需要安装后调用。下面我们来学习怎么去发布一个模块。1、将写好的包放到一个目录下2、在该目录下创建一个文件setup.py文件,文件里写入下面代码:...原创 2021-10-17 21:18:37 · 76 阅读 · 0 评论 -
DAY11、模块的制作、发布和安装1
模块的定义:在python当中,一个.py文件就是一个模块。作用:可以使我们有逻辑的去组织我们的python代码,以库的形式去封装功能,非常方便的让调用者去使用;可以定义函数、类、变量,也能包含可执行的代码。注意:不同的模块可以定义相同的变量名,但是每个模块中的变量名作用域只是在本模块中模块分类:内置模块、自定义的模块,第三方的模块模块的制作1、python文件都可以作为一个模块,模块的名字就是文件的名字。比如创建一个test.py文件,文件中创建一个add函数。test.py就是一个模块。原创 2021-10-17 21:12:11 · 102 阅读 · 0 评论 -
DAY11、OS模块操作文件
概述对文件进行重命名、删除等一些操作,在python中可以利用os模块。os模块提供一些系统级别的操作命令实操:重命名删除先建立一个文件注意:删除文件的前提是文件必须存在。创建文件夹删除文件夹这个前提也是文件夹存在在D盘下创建文件夹注意:mkdir只能创建一级目录,不能创建多级目录那有没有办法可以创建多级呢?makedirs是可以的如何创建了三级目录,可不可以用rmdir全部删除掉呢?是不可以的,因为这个目录不是空的,也就是说,rmdir只能删除空目原创 2021-10-17 17:59:48 · 208 阅读 · 0 评论 -
DAY11模块导入方式
import 导入模块我们经常说python有强大的第三方库,有很多常用的功能python提供自带的内置模块。简单的讲模块就是封装了一堆函数的py文件,就像是一个工具包,要使用里面的工具,得先将工具包挪过来。模块也是一样,在程序中需要用模块得先将模块导入。在python中导入模块使用import关键字。比如我们导入一个时间模块time,获取当前时间。模块导入一般放在文件最前面。调用模块的方法,格式:模块名.函数名,这样调用可以防止不同模块中有同名方法导致错误。import 在首次导入模块(一个原创 2021-10-17 15:48:48 · 129 阅读 · 0 评论 -
DAY11文件定位
文件定位tell()文件定位,指的是当前文件指针读取到的位置,光标位置。在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取。每个汉字为两个字节若文档为英文呢?对于中文来讲,每次读取到一个汉字,实际占用了2个字符truncate函数:可以对源文件进行截取操作seek()如果在操作文件的过程中,需要定位到其他位置进行操作,用seek()seek(offset,form)有两个参数,offset,偏移量单位字节,负数是往回偏移,正数是往前偏移,from位置:原创 2021-10-15 22:14:12 · 127 阅读 · 0 评论 -
DAY11文件备份
需求1利用脚本完成自动备份,要求用户输入文件名称,完成自动备份。需求2如果备份超大文件,一次将全部内容读取出来显然是不合理的,在需求1的基础上改进一下代码,让它备份大文件也不会让内存被占满...原创 2021-10-15 18:18:03 · 66 阅读 · 0 评论 -
DAY11文件读写2
首先将上节所创建的文件全部删除,纯净操作环境。读文件读取文件read(),将文件的内容全部读取出来。读取指定字符个数read(num)传入一个数字做参数,表示读取指定字符个数。readlines()按行读取,一次性读取所有内容,返回一个列表,每一行内容作为一个元素。小tips:单多行注释:选中+ctrl+/第二次读取将从第一次读取的位置继续读取每一行放入一个列表之中rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。如何让它正确显示呢?原创 2021-10-15 17:41:53 · 39 阅读 · 0 评论 -
DAY11文件操作与模块
Python文件操作和模块文件操作是很常见的功能,我们python当然也支持,python自带文件的基本操作方法,但是借助OS等模块更加方便快捷。在学习过程中,我们时不时会用到模块,这里也将详细讲解模块、常用模块、以及怎么制作、发布和安装模块。目录目标1、通过使用文件的打开关闭、读写等,完成文件备份脚本(重)2、通过文件定位的相关方法,完成精确控制文件读写。3、使用os模块操作文件,提高效率(重)。4、使用time、datetime模块完成时间相关操作(重).5、通过模块的制作、发布、安装原创 2021-10-15 11:56:56 · 58 阅读 · 0 评论 -
DAY10优化结构
在之前的代码执行中,我们可以看到,我方类和敌方类中的功能是极其相似的,我方子弹类和敌方子弹类也是很相似的,那么如何来进行一个结构的优化呢?import pygameimport random #导入随机数import time #加入延时操作from pygame.locals import *'''1、实现飞机的显示,并且可以控制飞机的移动【面向对象】'''class BasePlane(object): #抽象出来一个飞机的基类 def __init__(self,s原创 2021-10-15 09:49:51 · 41 阅读 · 0 评论 -
DAY10显示敌机
代码:import pygameimport random #导入随机数import time #加入延时操作from pygame.locals import *'''1、实现飞机的显示,并且可以控制飞机的移动【面向对象】'''class HeroPlane(object): def __init__(self,screen): #飞机默认位置 self.x=150 self.y=450 #设置要显示内容的窗口 .原创 2021-10-14 22:29:48 · 509 阅读 · 0 评论 -
DAY10玩家发射子弹
面向对象跟面向过程是一样的,不同的只是代码的组织方式不一样:1、创建一个飞机类,实现左移、右移、显示三个功能。2、创建一个键盘控制函数,实现键盘的左、右、空格键的功能。3、创建主函数,实现创建窗口、背景图片、背景音乐、并实现所有的逻辑。创建主函数玩家飞机射出子弹实现原理:1、每次按回车就会有一颗子弹射出,起始位置就是从飞机的停靠位置2、子弹超出窗口就消失,并且删除掉子弹(否则子弹会越来越多,界面会越来越卡)3、每一颗子弹就代表着一张图片4、子弹会从发射开始,慢慢的往上移动,直到消失原创 2021-10-14 21:35:55 · 530 阅读 · 0 评论 -
DAY10面向对象
之前都是面向过程式编码,接下来我们将使用面向对象式编码来实现这个游戏。实操代码:import pygamefrom pygame.locals import *'''1、实现飞机的显示,并且可以控制飞机的移动【面向对象】'''class HeroPlane(object): def __init__(self,screen): #飞机默认位置 self.x=150 self.y=450 #设置要显示内容的窗口原创 2021-10-14 18:05:19 · 505 阅读 · 0 评论 -
DAY10需求分析
pane pro需求的描述存在四个对象:我方飞机、敌方飞机、我方子弹、敌方子弹功能:背景音乐的添加我方飞机可以移动【根据按键来控制的】敌方飞机也可以移动【随机的自我移动】双方飞机都可以发送子弹步骤:创建一个窗口创建一个我方飞机,根据方向键左右移动给我方飞机添加发射子弹的功能【按下空格键去发送】创建一个敌人飞机敌人飞机可以自由的移动敌人飞机可以自动的发射子弹搭建界面和键盘检测pychame介绍pychame是一个利用SDL库写的游戏库,SDL呢,全名simple direct原创 2021-10-14 16:16:07 · 48 阅读 · 0 评论 -
DAY10添加背景音乐和玩家图片
实操此时可以听到音乐建立玩家对象并且初始化玩家位置设定移动规则原创 2021-10-14 16:15:01 · 475 阅读 · 0 评论 -
DAY10创建主窗体和键盘检测
搭建界面搭建界面01.py注意事项:确保图片文件能够识别到实操运行:因为现在是利用while循环一直在进行,不能进行拖动,要不然就会卡死可以给游戏增加一个标题键盘检测实操执行结果...原创 2021-10-14 15:35:08 · 421 阅读 · 0 评论 -
DAY10飞机大战游戏
步骤重点控制玩具飞机——面向过程控制玩具飞机——面向对象玩家飞机飞射子弹显示敌机敌机发射子弹难点控制玩具飞机显示敌机敌机发射子弹原创 2021-10-12 21:39:32 · 68 阅读 · 0 评论 -
DAY9课后作业
代码题2、请创建一个类,并定义两个私有化属性,提供一个获取属性的方法,和设置属性的方法。利用property属性给调查者提供属性方式的调用获取和设置私有属性方法的方式3、创建一个Animal类,实例化一个cat对象,请给cat对象动态绑定一个run方法,给类绑定一个类属性colour,给类绑定一个类方法打印字符串’ok’...原创 2021-10-12 21:33:16 · 52 阅读 · 0 评论 -
DAY9小结
私有化属性两个下划线开头,声明该属性为私有,不能再类的外部被使用或者直接访问。私有化方法私有化方法,即在方法名前面加两个下划线。property属性类属性,即在类中定义值为property对象的类属性装饰器,即在方法上使用装饰器。__new__方法__new__方法的作用是,创建并返回一个实例对象。单例模式不管创建多少次对象,类返回的对象都是最初创建的,不会再新建其他对象。错误与异常处理try: 可能出现错误的代码块except: 出错之后执行的代码块else:原创 2021-10-12 15:58:04 · 43 阅读 · 1 评论 -
DAY9__slots__
概述python是动态语言,在运行的时候可以动态添加属性。如果要限制在运行的时候给类添加属性,python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性。只有在__slots__变量中的属性才能被添加,没有在__slots__变量中的属性会添加失败。可以防止其他人在调用类的时候胡乱添加属性或方法。__slots__属性子类不会继承,只有在当前类中有效。实操只要没在slots范围内,便会报错作用限制要添加的实例属性可以节约内存空间一般原创 2021-10-12 15:39:23 · 85 阅读 · 0 评论 -
DAY9动态添加属性和方法
概述动态语言:运行时可以改变其结构的语言,例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。如php,javascrpt,python都是动态语言,C,C#,Java是静态语言。所以python可以在程序运行过程中添加属性和方法。动态添加属性示例实操动态添加属性如果再创建一个新的对象,他具备weight这个属性吗?显然不能如何给类对象添加属性呢?动态添加方法动态添加实例方法需要使用types示例实操注意这里的动态的绑定方法括号原创 2021-10-11 22:35:59 · 79 阅读 · 0 评论 -
DAY9错误与异常处理2
自定义异常自定义异常,都要直接或间接继承error或exception类。由开发者主动抛出自定义异常,在python中使用raise关键字示例实操输入4字正常输入六字就自定义异常了捕获一下异常这样就不会像刚才那样把堆栈信息也抛出来了...原创 2021-10-11 21:54:11 · 33 阅读 · 0 评论 -
DAY9错误与异常处理1
概述有时候代码写错了,执行程序的时候,执行到错误代码的时候,程序直接终止报错,这是因为python检测到一个错误时,解释器就无法执行了,出现了错误的提示,这就是异常。示例语法格式try: 可能出现错误的代码块except: 出错之后执行的代码块else: 没有出错的代码块finally: 不管有没有出错都执行的代码块try……except语句将可能出错的代码放到try里面,except可以指定类型捕获异常。except原创 2021-10-11 17:52:32 · 89 阅读 · 1 评论 -
DAY9__new__方法+单例模式
概述__new__方法的作用是,创建并返回一个实例对象,如果__new__只调用了一次,就会得到一个对象。继承自object的新式类才有new这一魔法方法。注意事项__new__是在一个对象实例化的时候所调用的第一个方法。__new__至少必须要有一个参数cls,代表要实例化的类,此参数在实例化时由python解释器自动提供,其他的参数是用来直接传递给__init__方法。__new__决定是否要使用该__init__方法,因为__new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本原创 2021-10-11 16:47:45 · 145 阅读 · 0 评论 -
DAY9 Property属性
概述实现方法1、类属性,即在类中定义值为property对象的类属性。示例给age属性设置值时,会自动调用setage方法,获取age属性值时,会自动调用getage方法。实操原创 2021-10-11 11:51:05 · 35 阅读 · 0 评论