三个小时快速入门python笔记

目录

一.python解释器

二.pycharm社区版安装

三.print()

1.拼接字符串

2.单双引号转义

3.换行

4.三引号

四.变量:

1.变量命名规则

2.命名方法

3.变量名大小写敏感

4.不能使用关键字作为变量名

五.数学运算(math库)

六.注释

1.#

2.""" """

七.数据类型

1.str字符串

2.整数

3.浮点数

4.布尔bool

5.空值类型

6.type()函数

7.组合使用

八.python的使用模式

1.交互模式

2.命令行模式

九.input

1.input返回值

2.返回值类型转换​

3.实践

十.条件语句

1.缩进

2.if-else

3.if的嵌套

4.if-elif-...-else

十一.逻辑运算

十二.列表[]:可变

1.append()-方法

2.可变数据类型

3.upper()-方法

4.remove()-方法

5.列表存放数据

6.len()-函数

7.列表索引

8.列表某位置赋值

9.针对列表的内置函数

十三.字典{}

1.键值对

2.获取键的值

3.键的类型:不可变类型

4.元组tuple():做键

5.字典:可变

十四.for循环

1.对列表,字典,字符串做迭代for-in-

2.字典的三个方法

3.对字典迭代​

4.range():整数序列

十五.while循环

十六.for和while之间的转换

十七.格式化字符串

1.format()

2.f-字符串

3.数字对字符串格式化

十八.函数:远离复读机行为

1.python自带的函数:内置函数

2.定义函数

3.作用域的概念

4.函数的返回值

5.sum():内置函数

6.查看内置函数官方地址

十九.引入模块

1.模块概念

2.sorted()排序

3.使用模块内部的函数

4.引入模块的三种方式

5.标准库内置模块

二十.第三方库的模块

1.概念

2.引入语法同上(先安装)

3.内置函数,内置模块,第三方模块使用比较​

4.查询第三方库

5.安装第三方库

二十一.面向对象的编程-概念

1.oop

2.面向对象和面向过程的对比

3.面向对象的特性

二十二.面向对象编程-具体语法

1.创建类

二十三.继承的具体语法

1.继承父类

2.调用的优先级

3.如何给子类添加其不同于其他子类的属性

4.什么时候可以用继承?

二十四.操作文件

1.文件概念

2.目录概念

3.目录结构

4.定位文件位置的两种方法

二十五.读操作-python对文件进行

1.open()-打开文件

2.read()-读文件

3.readline()方法读文件

4.readlines()-读文件

5.三种读文件的方法

6.关闭文件

二十六. 写操作-对文件进行

1.自动创建文件

2.w模式:原存则清空

3.a模式:附加模式

4.w/a:无法读

5.r+:读和附加

二十七.捕捉程序异常

1.异常类型:很多

2.错误输入源于用户

3.异常源于自身

二十八.测试步骤

1.引入被测

2.创建unittest.TestCase类的子类

3.定义测试用例 test_ :类下面的一个方法

4.python -m unittest

5.展示测试结果

6.其他


一.python解释器

python解释器的安装,验证是否安装成功

img

作用:代码转为字节码

二.pycharm社区版安装

作用:提供写代码的窗口

创建项目,创建文件的方法,各文件的解释

三.print()

print("")

print('')

引号里面都是字符串

img

1.拼接字符串

拼接字符串 +(两边空格更美观,但不要在代码前后空格)

2.单双引号转义

单双引号转义:反斜杠(enter上面的斜杠)—单引号包双引号/双包单也可以

3.换行

内部字符串换行:\n

4.三引号

三引号(打印跨行多的)

img

四.变量:

img

更换变量值且保存原变量值

img

1.变量命名规则

不能有空格不能以数字开头

只能由文字,数字,下划线组成,不能有除下划线以外的其他符号

2.命名方法

下划线命名法img

驼峰命名法

img

3.变量名大小写敏感

img

4.不能使用关键字作为变量名

五.数学运算(math库)

img

六.注释

1.#

win:快捷键:ctrl+/,多行多选,撤销同命令

2.""" """

三引号多行注释

七.数据类型

1.str字符串

len()函数

获取字符串的长度

其中空格数字符号都会占据一个长度,

但是转义字符不占:反斜杠不占,n占

img

""[]字符串索引

提取字符串某一位置上的单个字符(索引):

下标从0开始

img

2.整数

3.浮点数

(运算提到过)img

4.布尔bool

True

False

大写开头

img

5.空值类型

None

大写开头

img

需要一个变量但是还不知道该变量的值,就先赋值为None

6.type()函数

不确定对象类型时,用type函数

判断数据类型的重要性:

数据类型的重要:决定你能在该类型的对象上可以使用什么函数

eg:len()函数给字符串正常,给整数报错

img

7.组合使用

img

八.python的使用模式

命令行模式和交互模式

1.交互模式

在pycharm的python控制台/终端

输入一行执行一行

想看结果不用print

退出交互模式:quit()/ctrl+d

img

2.命令行模式

更常用命令行模式:交互模式的命令不会被保存

九.input

1.input返回值

用变量获取input的返回值(返回值类型一律为字符串

将一种类型的变量转变为另一种类型

要确保能这样转

img

img

2.返回值类型转换img

3.实践

img

十.条件语句

1.缩进

建议缩进为四个空格

python会根据缩进判断该部分代码归谁管

2.if-else

img

img

img

3.if的嵌套

if-if……

4.if-elif-...-else

多条件判断

img

img

十一.逻辑运算

img

十二.列表[]:可变

数据结构:把相关联的数据整合在一起

[]:表示空的列表,数据存放其间,用逗号分割

1.append()-方法

往列表添加数据:使用针对列表的方法—append

方法与函数的区别:

都是用来负责某个特定功能

方法使用时,在操作对象的后面加点

函数使用时,其括号放入对象

img

2.可变数据类型

与其他数据类型的不同:

img

3.upper()-方法

想要将已定义好的字符串的字母转化为大写打印:

但字符串本身不变

img

img

4.remove()-方法

移除列表元素remove(),元素要确实存在在列表里

img

5.列表存放数据

列表中可以存放不同类型的数据

img

6.len()-函数

求长度

返回列表里元素个数的数量

img

7.列表索引

取某个位置的元素,通过索引

img

8.列表某位置赋值

对列表某一位置的元素赋值/覆盖

img

9.针对列表的内置函数

img

十三.字典{}

1.键值对

用于存储键值对

是用来查找值

{}:空的字典用一对花括号表示,将要存放的键值对用引号包住,

键值之间用冒号表示对应

键值对之间用逗号分隔

img

2.获取键的值

字典[键名]

3.键的类型:不可变类型

列表不能做键:

列表可变类型,所以无法做键值对的

但是字典里有三个张伟年龄不一样,无法使用列表作为键,怎么区分

使用元组

4.元组tuple():做键

元组tuple:可存放多个元素,元组不可变

元组和列表的对比

():空的元组

[]:空的列表

不可变:不能使用列表能用的append()和remove()方法

img

元组在字典中的作用:img

5.字典:可变

添加删除键值对

img

添加键

覆盖原键值

img

检查该键是否已经存在

img

删除键

img

len():查有多少键值对

十四.for循环

有明显的循环对象次数的时候更加方便

1.对列表,字典,字符串做迭代for-in-

img

具体方法

变量名叫什么无所谓,会被依次赋值为迭代对象里的每一个元素

img

2.字典的三个方法

获取字典的键

获取字典的值

获取字典的键值对

img

3.对字典迭代img

变量会被赋值为键和值组成的元组

img

4.range():整数序列

for循环结合range

range表示整数序列

一个值

range只放一个值时,默认起始值为0

两个值

img

注意结束值

注意:结束值不在序列的范围内

img

三个值

range()可以包含三个数字

步长

加一个步长,表示每次跨几个数字默认跨1

img

img

十五.while循环

在条件何时结束未知的情况下使用while

img

十六.for和while之间的转换

img

实践练习:python21

十七.格式化字符串

1.format()

参数索引格式化0,1

img

只看参数关键字img

没看懂img

2.f-字符串

img

3.数字对字符串格式化

gpa是浮点数,但是使用format方法时,数字不用转化为字符串去和其他字符串拼接

使用format:.2f

img

使用f-字符串:.3f

img

十八.函数:远离复读机行为

1.python自带的函数:内置函数

2.定义函数

def关键字

表示开始定义函数

img

调用函数

定义函数时,代码不会被执行,调用函数时,代码才会被执行

img

3.作用域的概念

局部变量

函数内部的变量-局部变量

img

4.函数的返回值

无return:默认None

没有return时,默认返回None

img

不带返回值的函数

带返回值的函数

img

5.sum():内置函数

内置函数sum()计算列表所有数字的和

6.查看内置函数官方地址

img

十九.引入模块

python标准库里的其他模块

1.模块概念

模块:一个python程序引入模块,其中的函数和变量都可以为我所用

2.sorted()排序

img

3.使用模块内部的函数

除了自己定义函数也可以引入python模块里的函数

img

代码可简化为:

img

内置函数都是很常用的函数, median()不是很常用所以没有将它内置

4.引入模块的三种方式

import 模块名

from 模块 import 函数/变量

from 模块 import *

img

第三种不推荐

命名冲突

img

5.标准库内置模块

查看python标准库里的内置模块:

img

直接import

这些都可以直接import

查看引入的函数

查看引入的函数具体是怎么写的:win系统,按ctrl点击函数名

二十.第三方库的模块

1.概念

标准库模块不够使用:引入第三方库的模块(数量大,多样)

第三方库的模块:不是python官方提供的,其他程序员提供的

2.引入语法同上(先安装)

在引入之前需要先安装,也就是从互联网上下载好别人写好的模块

3.内置函数,内置模块,第三方模块使用比较img

4.查询第三方库

pypi.org

img

5.安装第三方库

安装第三方库时,在pycharm终端输入:pip install 库的名字

之后通过import引入,就可以使用了

二十一.面向对象的编程-概念

1.oop

oop:面向对象编程

理解oop的概念,不涉及具体代码

2.面向对象和面向过程的对比

过程:

负责完成某个具体任务的代码,之前的几乎都是面向过程,基本可以理解为函数

面向过程的核心:

把要实现的事情拆分成一个个步骤,一次完成

面向对象:

不会聚焦于事情的一步步的步骤

模拟真实世界,考虑各个对象有什么性质、能做什么事情

类和对象之间的关系

类是对象的模板,对象是类的实例

类相当于图纸,图纸上规定了

类定义了对象有何种属性方法,而对象拥有的具体属性则可以不尽相同(后面提到的多态)。

img

属性

img

方法:

通过对象,获取与它绑定的属性,代码更加有逻辑,清晰,让人理解

另一个能和对象绑定的是:方法

对象拥有不同的性质(属性——放在类里面的变量),且能做不同的事情(方法——放在类里面的函数)

img

3.面向对象的特性

面向对象的特性:封装,继承,多态

封装(隐藏细节):

表示写类的人,将内部实现细节隐藏起来。

使用类的人,只能通过外部接口访问和使用

接口

接口:提供使用的,方法

eg:

已经有人写好了一个类,

你只需要知道这个类有什么方法,

方法有什么作用,

具体怎么用就足够了

而不需要知道方法是具体怎么写的(现实世界使用洗衣机,只需要知道按钮啥功能怎么用)

作用:

封装减少了我们对不必要细节的精力投入

继承(有层次的类)

面向对象编程允许创建有层次的类(儿子继承爸爸,爸爸继承爷爷)

类也可以有

子类父类

表示从属关系

作用

好处:减少代码的冗余—父类的属性、方法都可以被继承,不需要反复定义

img

多态(具体表现可不同):

同样的接口,因对象具体类的不同,而有不同的表现

小学生和大学生都要写作业,但是作业的内容和难度不同

故写作业的方法不能直接定义在父类里面,需要分别定义在子类里否则大小学生用一个方法

但是使用时不用管大小学生,直接调用这个方法,会因为所属类的不同,执行不同的写作业方法。

如果不使用面向对象,不定义类,使用if,还要判断很多具体……

img

二十二.面向对象编程-具体语法

1.创建类

创建属于自己的类

img

类名

Pascal命名风格

类名的命名方法:不同于命名变量时的下划线命名,这里使用Pascal命名风格

首字母大写分割单词

img

定义属性

定义一个类,思考该类的对象都有哪些属性

构造函数

构造函数:作用-定义实例对象的属性,必须被命名为init

img

__init___()

括号里面可以存放很多参数,但是第一个参数的位置会被self占据

self:

用于表示对象自身,帮把属性的值绑定在实例对象上

img

定义方法:

表示对象能做什么事情,和创建普通函数差不多

和创建普通函数的两个区别

定义的方法要写在class里面

init一样,第一个参数被占用,self:用于表示对象自身

self

img

为什么在方法里面也要self: 在方法里面,去获取或修改和对象绑定的属性

字符串乘以数字

字符串乘以数字:把字符串重复这么多次

调用结果

方法的调用结果根据其属性不同而改变

img

调用类的方法:

对象.方法名(参数)

不需要手动把self传入

二十三.继承的具体语法

哺乳动物是父类

人和猫是子类

1.继承父类

子类括号里面写上父类,可以继承父类的属性和方法

如果对子类创建对象,对象调用的方法/属性在子类里没有,则会调用父类的

2.调用的优先级

如果子类里面有,则会优先使用子类里面的

img

3.如何给子类添加其不同于其他子类的属性

super().init()

super().init(参数为:父类中除去self的参数)

因为直接init,则会只调用子类的属性的构造函数,忽略父类其他共有属性

但是将公有属性再添加在子类的属性构造函数里,又会造成代码重复

因此使用super

类各自定义的属性放在def init()的参数列表里

img

4.什么时候可以用继承?

A、B两个东西

img

二十四.操作文件

1.文件概念

编程时对文件的操作:对文件的读写(文档/图片/音乐——内容形式不同,但都属于文件)

2.目录概念

文件归属于某一目录下

目录:看作是文件夹

3.目录结构

用代码对文本进行操作

问题:代码如何找到那个文件—了解电脑操作系统的目录结构

不同系统不一样

Unix/Linux/macOS: /

img

目录结构像树根一样:根节点根目录—用/表示—一切的文件目录,都存放在根目录下面

win:分区:\

每个磁盘分区有自己的根目录,用分区名+\ 表示

img

4.定位文件位置的两种方法

虽然表示根目录的表示不一样

但是都可以用两种方法定位文件位置

绝对路径和相对路径

绝对路径:

Unix:

路径中的每个目录之间,用斜杠分隔,最后以目标文件或者目标目录结尾

img

win:

相对路径:

以参考位置出发,以出发的位置来看,相对于这个位置处于什么路径

.

. :用点表示参照文件当前所在的目录

..

.. :当前文件更上一层的父目录,目录之间用/还是\进行分隔,取决于操作系统

img编辑

img

.和/的省略条件

.和/是可以省略的:处于同一父目录下

二十五.读操作-python对文件进行

1.open()-打开文件

参数一

open(参数一:放文件的路径:相对/绝对,参数二:放模式,模式是一个字符串,参数三:encoding:表示编码方式,一般都是UTF-8,用这个编码方式读取文件)

参数二

常见的模式

r:只读

w:只写

a:附加

r+:读写

参数二也可以不写,不写的时候默认为读取模式r

img

r:只读,找不到文件报错

在读取模式下,程序找不到你传入的文件名时,报错如下:提示文件不存在

img

参数三:编码科普视频

encoding=“ ”

返回文件对象f

如果open函数执行成功,就会返回一个文件对象

后续可对其进行读取或者写入操作

2.read()-读文件

读取方式和打印形式

针对读文件,文件对象有个read方法,调用后,一次性读取文件里面的所有内容并以字符串形式进行返回

img

二次调用

程序会记录文件读到了哪个位置因此调用完一次read(),再对同一个文件再次调用read会读空字符串,并打印

一般用代码操作的文件都比较简单,内容都是简单的字符串

img

read(数字)

文件很大的时候,不要读这个文件,读出来的内容,占很大的内存

给read传一个数字:只会读1-这个数个字节的文件内容

二次调用

下一次调用时,会接着这个字节继续往下读

img

3.readline()方法读文件

读一行,并打印

多次调用

再调用,再读一行,

根据换行符来判断什么时候一行结尾,换行符也被视为读到的内容的一部分

img

如果读到结尾,readline和read一样,返回空字符串

结合while循环

一般会用while循环,判断不是空字符串就继续读下一行,注意,换行符也是有内容的

img

4.readlines()-读文件

每行作为列表元素

readlines()读取全部,每行作为列表元素

img

和for循环结合

img

5.三种读文件的方法

img

6.关闭文件

读完文件后要关闭文件

close()-常忘

open()-f.close()

img编辑

with 文件自动关闭

经常忘记关闭文件的解决办法:with

with open() as f

img

img

img

二十六. 写操作-对文件进行

1.自动创建文件

如果文件不存在,不会像读文件时一样报错,会自动创建一个文件

2.w模式:原存则清空

三思而后行

打开文件进行写入,如果原文件已经存在,则会将原本内容清空

write()-调用时不会换行

手动添加换行符

img编辑

3.a模式:附加模式

如果不想把原文件清空

只想在其后附加内容,则不使用w模式,使用a附加模式

同w一样,文件如果不存在,会自动帮其创建

img

4.w/a:无法读

无论是w还是a,都无法读取原文件内容

img

5.r+:读和附加

既想读又想写的时候怎么办

r+:读写模式,而且调用的write是以追加的方式添加内容

img

二十七.捕捉程序异常

捕捉程序异常,在程序出错之前进行预判,用我们想要的方式去处理错误情况

python测试:不应该牵一发动全身

1.异常类型:很多

错误类型非常多,写的代码越多,对不同的类型的错误越熟悉

通过测试的方式把能够避免的bug都揪出来,debug掉

img

img

2.错误输入源于用户

对捕捉到的异常给出反应

try-except

try:后代码块跟可能出现异常的代码

except 异常类型:后跟应对的代码

except:不判断异常类型,对捕捉到的所有错误类型给出这个应对

运行时从上往下运行,如果第一个except语句 捕捉到了语句错误后面的except语句则不会执行

和if elif很像

img

3.异常源于自身

assert 布尔-终止测试

assert后面可以跟上任何的布尔表达式

测试时,在assert后面加上我们认为应该是正确的布尔表达式

问题:一旦测试出异常,代码终止,后续未被测试的也不能测试

img

unittest:测试专用库

所以一般使用专门做测试的库,他能一次性跑多个测试用例,并且能更直观的展现哪些测试用例通过了,哪些没有

unittest:常用的python单元测试库python自带,无需额外安装

但是是库,需要使用import语句,将其引入测试程序

单元测试

单元测试:对软件中的最小可测试单元进行验证

验证某函数某方面表现是否符合预期

单独文件

将测试代码放在独立的文件里,不和要测试的功能混合

更清晰的划分实现代码和测试代码

二十八.测试步骤

1.引入被测

在测试文件中,把要测试的函数或类引入进来

如果测试文件和被测试文件位于同一文件夹下引入的语法:

form 文件名 import 函数名/类名

2.创建unittest.TestCase类的子类

img编辑

3.定义测试用例 test_ :类下面的一个方法

在创建的测试的类的下面可以定义不同的测试用例

每一个测试用例,都是类下面的一个方法

名字必须以test_开头

命名很关键,因为unittest这个库会自动搜寻test_开头的方法

并且只把test_开头的当成测试用例

写测试用例之前,先构想预期的被测函数的行为是什么样的

4.python -m unittest

写完测试用例后,在pycharm的终端,输入:python -m unittest

这个库会自动搜寻所有,继承了unitest库里TestCase类的子类

运行所有以test_开头的方法,并展示测试结果

告诉运行了几个测试,每个点代表测试通过的意思

5.展示测试结果

.

img

F

如果有一个测试没有通过,其中一个点就会变成F

img

6.其他

针对性的方法进行测试

推荐使用更针对性的方法进行测试,因为失败时会给出更详细的原因

img

TestCase的setUp方法

额外的方法,进一步提高测试效率(耐心点,别慌,看代码)

img

TestCase的setUp方法,在每一次执行test_方法前都会先调用一次

所以通过setUp方法,把测试对象创建好

img

实践

img

img

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值