Python3.6学习记录

# -*- coding: utf-8 -*-

注释

“>>>:输出的结果”

pip安装

curl https://bootstrap.pypa.io/get-pip.pyarrow-up-right -o get-pip.py python get-pip.py

变量、字符串操作

大小写:.title()首字母大写, .upper()全大写, .lower()全小写

例:

word  = 'aBcdEfg'
print(word.title())
>>>Abcdefg

word  = 'aBcdEfg'
print(word.upper())
>>>ABCDEFG

word  = 'aBcdEfg'
print(word.title())
>>>abcdef

合并(拼接):+ 制表符: \t 换行 :

删除空白: rstrip()删除右边空白, lstrip()删除左边空白,strip()删除左右空白

例:

数字

浮点数:

求模(求余)运算符 (%),它将两个数相除并返回余数

求商运算符(//),它将两个数相除并返回商,不管余数

函数: str() 将数据转成字符串 , int()整数

列表:

列表-访问列表内容,从左至右,0为第一位

列表-组织列表

sort()对列表进行永久正序排序,无法恢复到原来状态,按字母顺序排列;sort(reverse=True)反序 例:

列表-列表长度:

列表-操作列表

列表-数值列表

range()函数,指定一个数字范围

例:range(1, 5),从1开始,到5结束,不包含5

例:range(2, 10, 2),从2开始,到11结束,每隔2生成一个值。那么生成的结果就是2,4,6,8

列表-数字统计: min()最小值,max()最大值, sum()求和

列表-复制列表: 前面是新列表,后面是旧列表,可以是全部,也可以是指定的分片内容。复制列表后对新旧列表添加的元素不会出现在另一个列表中。

列表转字符串,通过''.join来将列表转为字符串,前面的单引号中可以添加任何字符做转换后的分隔符,

元组

跟列表类似,不过是用小括号包含,且元组中的元素不能修改(可以通过变量的形式修改)。dimensions = (200, 50)。读取、遍历操作形式跟列表相同。

if语句

如果条件测试的结果为True ,Python就会执行紧跟在if 语句后面的代码;否则Python将忽略这些代码。

还有以下类似的情况,就不一一举例了

字典

以大括号{}包含,每个键对应一个值。

字典-修改:

字典-删除:

简单取值:

字典-取值方法:items()显示所有,sorted()排序,key()取键, values()取值, set()除去重复项。

例:

1、items(),通过for循环可以依次取出所有指定值

2、sorted(),对结果调用sorted()函数,最终结果将会按顺序显示结果

3、key(),取字典的键而不显示值

4、value(),取字典的值而不显示键

5、set(),当字典中部分键的值相同时,可以通过set()函数去重。

字典-嵌套

当一个字典无法存储同类型的第二个信息时,就可以用到嵌套。即将字典嵌套到列表中

将字典存储在列表中以及取值示例:

将列表存储在字典中以及取值示例:

在字典中存储字典以及取值示例:

While循环

input()函数

让程序暂停,等待用户输入文本,并将输入的内容存储在变量中,方便调用

int()函数:获取数值输入

以下两份代码执行完之后虽然输出内容一样,但第一份其实是将数字以文本形式输出 所以第一份代码执行后会报错

while循环语句:

break:退出循环,不光在while中可以用,所有循环语句中都能使用break退出当前循环

continue:要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue 语句,它不像break 语句那样不再执行余下的代码并退出整个循环。

while循环处理列表和字典

函数

定义函数

向函数传递信息

第一阶段,形参,实参均为空值,直接显示打印内容

第二阶段,形参为变量username,实参为手动输入内容,liqiao.将实参的值写到形参变量中,并打印出来,打印格式为首字母大写。

第三阶段,形参为变量username, 实参为变量usernames,实参变量提前定义好了,内容为dier.最后打印显示。

第四阶段,形参为变量username, 实参为变量usernames,提前设置一个列表,将姓名记录,通过for循环将列表中的值依次放到实参变量中并进行打印

如果有多个形参,在调用函数通过实参给形参赋值时,要么按形参的位置,依次赋值;要么按形参名称赋值

关键字实参:按形参名称赋值

默认值

等效的函数调用

返回简单值 return函数

让实参变成可选,例如有的人的名字由三部分组成,有的只有两部分。这时就可以将形参设置一个空值。 下面的例子中,将middle_name设置为空值,这样就算只输入first_name 和last_name,也不会报错。

返回列表、字典 函数可返回任何类型的值。

返回列表

返回字典

传递列表

在函数中修改列表

通过for循环将一个列表中的元素添加到另一个列表中

通过while循环将一个列表中的元素移到另一个列表中

传递任意数量的实参,形参toppings前面的*表示创建一个名为toppings的空元组,

传递任意数量的实参,形参toppings前面的**表示创建一个名为toppings的空字典

将函数存储在模块中,导入整个模块

先新建一个名为pizza.py的文件,并在其中创建一个函数。如下:

再新建另一个名为make_pizza.py的文件,导入并调用pizza.py中的函数

执行make_pizza.py这个文件,python会在后台自动导入pizza.py的内容到make_pizza.py中并完成代码执行

导入指定的函数;

导入单个的函数时,在引用时就不需要文件名加模块名称了 先新建一个名为pizza.py的文件,并在其中创建一个函数。如下:

再新建另一个名为make_pizza.py的文件,导入并调用pizza.py中的make_pizza函数

使用as给模块指定别名,调用模块中的函数更轻松

先新建一个名为pizza.py的文件,并在其中创建一个函数。如下:

再新建另一个名为make_pizza.py的文件,导入pizza.py中的所有函数,并设置别名 p

导入模块中的所有函数,跟导入整个模块的效果一样,不过在调用方法上有所区别

先新建一个名为pizza.py的文件,并在其中创建一个函数。如下:

再新建另一个名为make_pizza.py的文件,使用 * 导入pizza.py中的所有函数

通过class 来创建类,类的首字母为大写。 以下是一个例子,创建了一个名为Dog的类,并在其中制定了部分方法(函数),最后对类进行了调用

方法:类中的函数称为方法,之前所有的函数都适用于方法。__init__()是一个特殊的方法,每次根据类创建新实例时,Python都会自动运行它。这个方法的开头和末尾各有两个下划线,用于做约定,防止跟其它方法发生名称冲突。

使用类和实例:给属性指定默认值、修改属性的值、对属性的值进行递增

继承

重写父类

比如A类为B类的父类,但A类中有某一个方法(函数)在B类中不适合,则可以在B类中重写这个方法。

导入类:因为类中放的也是函数,所以导入方法跟函数类似

导入一个类,先创建一个名为car.py的文件,然后在其中写一个Car的类,在另外一个文件中进行导入

cat.py

执行my_car.py即可

在一个模块中存储多个类

car.py

执行my_electric_car.py即可

从一个模块中导入多个类,引用前面的car.py文件。

my_cars.py

导入整个模块

导入模块中的所有类

在一个模块中导入另一个模块

方法跟前面相同,思路如下:分别有A B两个模块文件,B 继承了A 的类,那么需要先在B模块文件中导入继续的A类,C文件在需要分别使用A B两个模块时,只需导入A B模块即可。 再复杂点,A B C三个模块文件,C继承B,B继承A,文件D需要导入C时,只需要C B分别在各自的文件中准确导入了继承的模块后,D可以直接通过C调用,而不需要再导入A B两个模块。

文件

从文件中读取数据 新建一个文件 pi_digits,输入如下内容:

新建file_read.py文件,来读取上一个文件的内容:

file_read.py

解释

open() #打开文件, as #给打开的文件取个别名(赋值给变量),方便后面操作。默认是跟执行文件在同一目录。 read() #读取文件的全部内容 rstrip() #之前学到过的,删除右边的空格。可以去掉对比一下效果。 #这里调用了open(),却没有close(),是因为使用了with关键字,作用是在访问文件后自动将其关闭。

文件路径,以下只是linux环境下的路径写法,windows环境中路径为反斜杠\

相对路径

绝对路径

逐行读取:有时需要检查其中的每一行。则需要通过for 循环来实现

file_read.py

创建一个包含文件各行内容的列表:使用with关键字时,open()返回的文件内容只能在with代码块内可用。如果要在with代码块以外的地方使用,可以将内容存储在一个列表中。然后在其它地方调用。

file_read.py

写入文件:跟读取类似,不过还需要在调用 open()时提供另外一个实参

解释:

w #实参,表示写入,如果文件里有内容,会被覆盖 a #追加,如果文件里有内容,不会覆盖,在后面追加写入的内容。 r #读取文件时的默认值,可写可不写。 write #写入函数

异常

当发生python不知所措的错误时,会创建一个异常对象,如果未对该异常进行处理,程序将停止。 以下例子为使用try-except

处理异常

ZeroDivisionError

FileNotFoundError

使用try-except时配合else

报错时不做任何提示 直接把except下的print()改成 pass

分析文本

以下代码中,我有准备一个名为Napoleon.txt的文件,但没有python这个文件,运行后会显示Napoleon.txt的单词数,然后提示没有python这个文件

存储数据

使用json.dump()来存储数据

使用json.load()来读取数据

  • pygame

  • rect()

  • left

  • top

  • right

  • bottom

  • left : 矩形左边的X坐标 150 ---->图片中的A点

  • top: 矩形顶部的Y坐标 75 ---->图片中的B点

  • right : 矩形右边的X坐标 260 ----->图片中的C点

  • bottom: 矩形底部的Y坐标 120 ------->图片中的D点

python获取网页指定信息,例如csrf-token

需要用到的库有requests BeautifulSoup

比如获取上图中 csrf-token 的值,过滤的关键在于 soup.find(‘meta’,{‘name’:’csrf-token’})[‘content’]

python3通过re加正则表达式,过滤指定内容报“TypeError: cannot use a string pattern on a bytes-like object”错误,解决方法

python3.6登录website,辅助软件fiddler,用于抓取登陆过程以及需要的信息

一、直接提交参数进行登录,以jenkins登录为例

二、需要携带crsf-token,以redmine登录为例

三、cookie

待补充

关于Python 文件中if name == 'main'的意思

当.py文件被直接运行时,if name == 'main'之下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main'之下的代码块不被运行。

示例:只有直接执行以下内容的py文件时才会打印“Hello, world!”

最后更新于