0.前言

最近加入了一个新的团队,对python有一定的要求,因此用一周左右的时间学习了python的基础语法。


1.用pycharm编写程序

1.0. 项目名字:PythonStudy

对应视频:4.用Pycharm编写程序

1.1. 修改模板注释

python 基础语法 pdf python基础语法课程_python 基础语法 pdf

python 基础语法 pdf python基础语法课程_元组_02

注意,①必须要加,这样python在输出(print)时,中文就不会出现乱码

1.2. 开始写第一个python项目

1.2.1. 新建python项目

python 基础语法 pdf python基础语法课程_List_03

python 基础语法 pdf python基础语法课程_元组_04

1.2.2. 新建python程序

python 基础语法 pdf python基础语法课程_python_05

python 基础语法 pdf python基础语法课程_List_06

1.2.3. HelloWorld

print("hello,world")

随后右键,点击Run运行

python 基础语法 pdf python基础语法课程_元组_07

1.3. 注释

1.3.1. 单行注释

#注释内容(相当于java的 //注释内容)

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_08

1.3.2. 多行注释

"""
多行注释:第一行
多行注释:第二行
"""

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_09

注意:可以用单引号,也可以用双引号,

但使用双引号会更加规范!

1.4. 变量

1) 变量可以是任意类型

2) 变量名必须是==大小写英文、数字和下划线( _ )==的组合,不能以数字开头

1.4.1. 赋值

直接 变量名 = 变量值

如果类型是字符串,值用单引号或双引号括起来

python 基础语法 pdf python基础语法课程_python_10

1.4.2. 带变量的输出

1.4.2.1. 拼接变量

在java语言中,有

int age = 10;
System.out.println("我的年龄是" + age + "岁");

在python语言中,有

age = 10
print("我的年龄是", age, "岁")

python 基础语法 pdf python基础语法课程_元组_11

补充:用加号其实也可以,但必须类型相同!

区别就是:使用逗号有空格,使用加号则没有空格

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_12

特别注意:如果类型不同,使用加号会报错

python 基础语法 pdf python基础语法课程_python_13

1.4.2.2. 格式化输出(占位符 %d 和 %s )

1) %d : 有符号的十进制整数

2) %s : String字符串

在需要用到变量的地方使用占位符,

然后在整个字符串的最后面加上%(变量1 , 变量2 , 变量3…)

python 基础语法 pdf python基础语法课程_元组_14

1.5. 拓展知识点:print方法还可以写其他内容

1.5.1. 分隔

直接用逗号,可以用空格将字符串分隔

如果在最后用sep = “.” 就会以点分隔字符串

python 基础语法 pdf python基础语法课程_元组_15

(注意,在sep前面的逗号,不是分隔,类似在java中,多个属性用逗号分隔

1.5.2. 换行设置

在后面可以加上end = “xxx”,来设置这个print函数结尾的内容

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_16

可以看到,只有在默认情况,或是end="\n",才会换行

否则不会换行,并拼接end里的内容


2. input() , type() , 强制类型转换

2.0. 项目名字:PythonStudy

对应视频:5.条件判断语句

2.1. input方法

input("提示语")

如上,在运行后,会在控制台输出"提示语"

input方法会接收用户输入的内容,同时也可以赋值(类型是String

结合print( )方法,有如下用法:

python 基础语法 pdf python基础语法课程_元组_17

如果有多个input,python会逐个运行(运行到input,类似于遇到一个断点)

2.2. type方法

使用type( )可以判断输入参数的类型

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_18

2.3. 强制类型转换

和java类似,可以用int( ),str( )等进行强制类型转换

python 基础语法 pdf python基础语法课程_python_19


3.条件判断语句

3.0. 项目名字:PythonStudy

对应视频:5.条件判断语句

3.1. 条件判断语句

特别注意:Python指定任何非0和非空值为true,0或None为false

基本形式为:

if 判断条件1:
	执行语句1
    
elif 判断条件2:
	执行语句2
    
else:
	执行语句3

python的语法特别注重缩进,同一层次的缩进要相同(一般为4个空格,也就是按一次tab)。其实缩进量可多也可少,只要保证相同即可。

python 基础语法 pdf python基础语法课程_元组_20

3.2. 导入import

直接import 包名即可

建议写在有效代码的第一行

python 基础语法 pdf python基础语法课程_python_21


4.循环语句

4.0. 项目名字:PythonStudy

对应视频:6.循环语句

4.1. for循环

for循环分为两种,一种是生成变量 i 遍历,另一种是直接对字符串或列表遍历

4.1.1. 第一种

4.1.1.1. 一个参数

python:

for i in range(5):
    ...

java:

for(int i = 0; i < 5; i++){
    ...
}

python 基础语法 pdf python基础语法课程_元组_22

4.1.1.2. 两个参数

python:

for i in range(1, 5):
    ...

java:

for(int i = 1; i < 5; i++){
    ...
}

python 基础语法 pdf python基础语法课程_元组_23

4.1.1.3. 三个参数(很少用)

python:

for i in range(1, 10, 3):
    ...

java:

for(int i = 1; i < 10; i+=3){
    ...
}

python 基础语法 pdf python基础语法课程_List_24

4.1.2. 第二种

4.1.2.1. 遍历字符串
for i in "guangzhou": 
    ...

python 基础语法 pdf python基础语法课程_字符串_25

如上,把字符串的每一个字符依次赋给 i

4.1.2.2. 遍历列表
for i in ["妮妮", "佳佳"]:
    ...

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_26

补充知识:列表的定义方法为:

dataList = ["妮妮", "佳佳"]

取出列表的某个值:

a = dataList[0]	#妮妮

python 基础语法 pdf python基础语法课程_python_27

在for循环中取值的话:

for i in dataList:
    print(i)

如上,直接取i就可以了!

4.2. while循环

4.2.1. 基础while循环

基本格式如下

while 条件语句:
    ...

python 基础语法 pdf python基础语法课程_python_28

特别注意:在python中没有i++的用法,只能是i+=1

而且要用到的变量必须在循环之前被定义好

4.2.2. while-else循环

其实就是不满足while的时候,就会执行else,并终止循环

以下例作为测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvAPNwR3-1620282086879)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20210426102911684.png)]

可以看到,由于dataList[0]是"妮妮",不满足while执行条件

就直接执行了else

并且可以发现,程序不再继续执行

即一旦不满足while条件,执行了else,循环就停止了

4.3.enumerate() - 转换成枚举类型

enumerate(dataList)

enumerate()能将列表、元组、字典变成枚举类型

此时里面的每个元素,都会被转化成==(index, value)==格式的二元组

python 基础语法 pdf python基础语法课程_python_29

4.4. break和continue

4.4.1. break:

和java一样,执行break后,结束并跳出整个for循环/while循环

python 基础语法 pdf python基础语法课程_字符串_30

4.4.2. continue:

和java一样,执行continue后,跳出本次循环

python 基础语法 pdf python基础语法课程_List_31


5.字符串

5.0. 项目名字:PythonStudy

对应视频:7.字符串

5.1. String字符串

1) 使用单引号、双引号、三引号(三个单引号/三个双引号,常用于段落)括起

2) 使用反斜杠表示转义

\t:制表符

	\n:换行符

3) 默认用utf - 8编码,所有字符串都是unicode字符串

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_32

5.2. 截取字符串

需要注意:java和python在截取字符串时,都是左闭右开

5.2.1. 基础方式

str1[0: 4]

python 基础语法 pdf python基础语法课程_python_33

5.2.2. 截取某索引字符之前 / 之后

# 截取5之前
str1[:5]			# 左闭右开:不包括5

# 截取5之后
str1[5:]			# 左闭右开:包括5

python 基础语法 pdf python基础语法课程_List_34

5.2.3. 截取字符串—自定义步进值

str1[0:5:2]		#从索引值0-4的字符中,以步进值为2,进行截取

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_35

5.3. String类的方法

方法

作用

decode(“utf-8”,”strict”)

encode(“utf-8”,”strict”)

isalpha()

判断是否所有字符都是字母

isdigit()

判断是否所有字符都是数字

isnumeric()

判断是否所有字符都是数字(有细微区别,日后再说)

isalnum()

判断是否所有字符都是字母或数字

join(seq)

以seq作为分隔符,将str所有元素合并

len(str)

返回长度

lstrip()

截掉字符串左边的空格

rstrip()

截掉字符串右边的空格

split(参数…)

以其中一个参数作为分隔符分割字符串。日后再说


6.列表

6.0. 项目名字:PythonStudy

对应视频:8. 列表(上)、9. 列表(下)

6.1. 列表定义

dataList = ["妮妮","佳佳",3]	#类型不要求相同

list可以存储混合类型,存储时不会改变数据类型

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_36

附:列表切片代码如下:

dataList[0: 3: 2]			# 索引范围0-3,每隔两位切一个

python 基础语法 pdf python基础语法课程_List_37

6.2. 列表 - 新增

6.2.1. append - 增加

dataList.append( 6 )			#新增数据 6

python 基础语法 pdf python基础语法课程_python_38

补充:可以看到这里新增的数据是String类型

这是因为:通过input输入的类型都是String类型

append新增的元素为列表时,这个元素列表会原样加入其中

dataList.append( [3, 4] )		#新增3、4两个元素

python 基础语法 pdf python基础语法课程_字符串_39

6.2.2. extend - 扩展

dataList.extend( [3, 4] )		#扩展列表,元素是[3, 4]

python 基础语法 pdf python基础语法课程_字符串_40

如果extend的列表,其中的元素仍是列表

那么这个列表元素不会被拆开

6.2.3. insert - 插入

dataList.insert(1, 8)

python 基础语法 pdf python基础语法课程_元组_41

需要注意,如果insert的元素是列表,那么这个列表会被原样加入

python 基础语法 pdf python基础语法课程_元组_42

6.2.4. 小结

python对列表元素的默认处理方式,是直接将其作为元素执行

只有extend才会将新增的列表元素拆开并逐个添加

6.3. 列表 - 删除

6.3.1. del - 根据下标删除

del dataList[1]

python 基础语法 pdf python基础语法课程_元组_43

6.3.2. remove - 根据数值删除

dataList.remove("妮妮")

python 基础语法 pdf python基础语法课程_字符串_44

特别注意:如果有相同的数据,只会删除第一个

6.3.3. pop - 弹出

data1 = dataList.pop( )		 	 #弹出最后一个
data2 = dataList.pop(1)			#弹出下标为1的数据

python 基础语法 pdf python基础语法课程_字符串_45

python 基础语法 pdf python基础语法课程_字符串_46

6.4. 修改

修改直接用下标

dataList[1] = "老王"

python 基础语法 pdf python基础语法课程_元组_47

6.5. 查找

6.5.1.查找列表中是否有某元素

if "佳佳" in dataList:
    ...

python 基础语法 pdf python基础语法课程_元组_48

6.5.2.查找某元素的下标

list下有index方法,用index(“xxx”)可返回该元素的下标,如

dataList.index("妮妮")

python 基础语法 pdf python基础语法课程_List_49

还可以在范围内查找:

dataList.index("妮妮", 1, 4)		#在 1-4 索引范围内查找妮妮

python 基础语法 pdf python基础语法课程_字符串_50

特别注意:还是左闭右开原则

如果没有找到,程序会报错,此时需要进行异常处理。

6.5.3.查询某元素在列表中有几个

dataList.count("妮妮")		#看列表中有几个"妮妮"

python 基础语法 pdf python基础语法课程_字符串_51

6.6. 对列表元素处理

6.6.1.reverse - 反转

dataList.reverse()		#将dataList的所有元素位置反转

需要注意,reverse()的返回值是void,因此不可用print(dataList.reverse)

reverse方法直接对原列表dataList操作,这点与java不太一样。

python 基础语法 pdf python基础语法课程_python_52

6.6.2.sort - 排序

dataList.sort()										# 升序排序
dataList.sort(reverse=True)				 # 降序排序

python 基础语法 pdf python基础语法课程_python_53

6.7. 列表嵌套

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_54


7.元组

7.0. 项目名字:PythonStudy

对应视频:10.元组_字典(上)

7.1.元组Tuple概述

元组(Tuple)与list类似,不同之处在于:

1) tuple的元素在定义后不可更改

2) tuple写在小括号里

tuple的元素不可变,指的是地址不可变。如果tuple其中一个元素是一个列表,那么这个列表不可变,但列表中的数据可变

7.2.定义元组

tuple1 = ()					 # 定义一个空元组
tuple2 = (1,)			  # 定义只有一个数据的元组
tuple3 = (1, 2, 3)		# 定义多个数据的元组

▲ 特别注意:定义只有一个数据的元组时,后面要加逗号

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_55

附:元组切片代码如下:

tuple4[0: 5: 2]			# 索引范围0-5,每隔2位取一个

python 基础语法 pdf python基础语法课程_python_56

7.3.增加(联合)

不可增加元素,只能生成新的元组,并将两个元组联合

tuple1 = (1, 2)
tuple2 = (3, 4)
newTuple = tuple1 + tuple2				# (1, 2, 3, 4)

python 基础语法 pdf python基础语法课程_元组_57

7.4.删除

不能删除数据,只能删除整个元组

del tuple1

python 基础语法 pdf python基础语法课程_python_58


8.字典

8.0.项目名字:PythonStudy

对应视频:10.元组_字典(上)、11.元组_字典(下)

8.1.定义

字典(dict)其实就是java中的map,存储格式都是键值对

dict1 = {	"name": "妮妮",
          	"sex": False}

python 基础语法 pdf python基础语法课程_字符串_59

如上,键值之间用冒号,键值对用逗号分隔

书写方式与JSON字符串类似

8.2.访问

8.2.1.直接访问

dict1["name"]					# 直接访问,参数是key

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_60

如果不存在这样的键值对,则会报错

8.2.2.get方法访问

dict1.get("location")											#不存在时,返回None
dict1.get("location", "不存在这样的键值对")		#第二个参数设定不存在时的返回值

python 基础语法 pdf python基础语法课程_元组_61

8.3.新增

dict1["location"] = "广州"		#新增键值对 location : 广州

python 基础语法 pdf python基础语法课程_字符串_62

8.4.删除

8.4.1.del - 删除

del dict1					 # 删除这个字典
del dict1["sex"]			# 删除key为sex的键值对

python 基础语法 pdf python基础语法课程_python_63

8.4.2.clear - 清空

清空意思是删掉字典中所有的键值对,但保留这个字典

dict1.clear()

python 基础语法 pdf python基础语法课程_python_64

8.5.修改

dict1["name"] = "佳佳"			# 把key为name的键值对的值改为"佳佳"

和增加的代码类似

python 基础语法 pdf python基础语法课程_python_65

8.6.查询(遍历)

8.6.1.遍历所有的key

dict1.keys()				# 返回值是一个列表list

python 基础语法 pdf python基础语法课程_python_66

遍历dataMap.keys(),原理和遍历列表list一样

8.6.2.遍历所有的value

dict1.values()		# 返回值是一个list

python 基础语法 pdf python基础语法课程_List_67

遍历dict1.values(),原理和遍历列表list一样

8.6.3.遍历所有键值对item

dict1.items()			# 返回值是一个list,每个元素都是一个元组tuple
8.6.3.1.第一种方式:用item接收遍历的结果
for item in dict1.items():
    print("%s...%s..." % item)					# 一定要用两个占位符%s

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_68

▲ 特别注意:遍历dict1.items()时

得到的每个item(键值对)都是固定有两个元素的元组tuple(“key” ,“value”)

此时如果只用一个%s占位符输出,就会报错

因为python会根据元组的元素个数,将其逐个分配给每个占位符(也就是说会被分配给两个占位符)

8.6.3.2.第二种方式:分别用key和value接收遍历的结果
for key, value in dict1.items():
    print("%s...%s..." % (key, value))		# 一定要用两个占位符

python 基础语法 pdf python基础语法课程_python_69


9.集合

9.0.项目名字:PythonStudy

对应视频:11.字典(下)_集合

9.1.定义

集合(set)的特点:

1) 会过滤重复元素

2) 无序(没有索引)

set1 = {1, 2, 3, 3}			# 用{ }定义,会自动去重

python 基础语法 pdf python基础语法课程_字符串_70

因此,集合常用于去重:将list、tuple等转换成set,再转换回来

9.2.数据类型转换

其实之前学过的所有数据类型,几乎都是可以相互转化的

以转化成set为例

python 基础语法 pdf python基础语法课程_字符串_71

其中字典转换成集合,只会存储key而不会存储value

9.3.增加

9.3.1.add - 新增

set1.add()

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_72

9.3.2.update - 更新

set1.update(set2)		#将set2的元素并入set1

类似list的extend,是将set2所有元素并入set1

python 基础语法 pdf python基础语法课程_python_73

9.4.删除

9.4.1.del - 删除集合

del set1

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_74

9.4.2.clear - 清除所有元素

set1.clear()

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_75

9.4.3.remove - 移除元素:参数是元素的值

set1.remove("a")			# 删除值为a的元素

python 基础语法 pdf python基础语法课程_python_76

9.4.4.pop - 弹出元素

set1.pop()					# 空参,弹出最后一个元素

由于集合set是无序的,因此不可以像列表一样弹出某个索引的元素

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_77


10.函数

10.0.项目名字:PythonStudy

对应视频:12.函数

10.1.定义

函数其实就是java的方法:

def hello_world():
    ...

python 基础语法 pdf python基础语法课程_字符串_78

规范:

1) 蛇形命名法aaa_bbb_ccc

2) 方法前后需要各空出两行

10.2.带参函数

def print_me(str1)

和java类似,括号内写上形参即可,但不需要写数据类型

python 基础语法 pdf python基础语法课程_元组_79

10.3.返回值

10.3.1.一个返回值

def add(a, b):
    return a + b

和java类似,return即可

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_80

10.3.2.多个返回值

def divide(a, b):
    shang = a // b			# 用/时商是小数;用//时商是整数
    yushu = a % b
    return shang, yushu

返回值之间用逗号分隔。常见的返回值接收方式有两种:

1) 用占位符接收

python 基础语法 pdf python基础语法课程_元组_81

2) 用变量接收

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_82

10.4.局部变量与全局变量

与java的规则相同,简单复习一下:

1) 局部变量只在方法体内可调用

2) 全局变量在整个py文件中都可调用

3) 局部变量和全局变量相同时,优先调用局部变量

python 基础语法 pdf python基础语法课程_List_83

4) 局部变量和全局变量相同时,用global调用全局变量:

global a				# 不用global的话,就只是定义一个同名的局部变量
						# 在方法中使用global后,方法体中所有的操作都是对全局变量的操作

python 基础语法 pdf python基础语法课程_元组_84


11.文件操作

11.0.项目名字:PythonStudy

对应视频:13.文件操作

11.1.open - 打开文件

使用open函数可以打开一个已经存在的文件

若不存在,则新建一个这样的文件

默认路径:该程序所在的文件夹

file = open("demo.txt", "w")			# 以“写入”模式打开demo.txt
file.close()										 # 记得关闭文件,其他程序才可以正常打开该文件

python 基础语法 pdf python基础语法课程_python_85

11.2.访问模式

常用的访问模式有六种:

访问模式

解析

r

“只读”模式,文件的指针放在文件的开头,这是默认模式

w

“写入”模式,若文件已存在则覆盖,不存在则新建

a

“追加”模式,在末尾追加内容,不会覆盖

rb

“只读”模式,以字节的格式打开,文件的指针会放在文件的开头

wb

“写入”模式,以字节的格式打开,若文件已存在则覆盖,不存在则新建

ab

“追加”模式,以字节的格式打开,在末尾追加内容,不会覆盖

11.3.写入

在open时,如果是"w"打开(写入模式),会覆盖内容

如果是"a"打开(追加模式),会在文末添加内容。

file.write("hello world!!")					# 写入hello world

python 基础语法 pdf python基础语法课程_字符串_86

python 基础语法 pdf python基础语法课程_字符串_87

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_88

11.4.读取

11.4.1.read - 读取指定字符

需要注意,使用了read函数后,指针就会移动

在下次使用read函数时,不会再从文件开头开始读取,而是从指针位置开始计数

content = file.read(2)			# 读取2个字符,赋值给content

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_89

11.4.2.readline - 从指针位置读取本行剩余内容

line1 = file.readline()		# 从指针位置开始读取,直到本行结束

常用情况是直接readline()读取一整行

但如果指针不是指在本行开头,那么readline()会读取剩下的内容,直到本行结束

python 基础语法 pdf python基础语法课程_python_90

11.4.3.readlines - 读取所有行

lines = file.readlines()			# 读取所有行,返回值是一个列表

python 基础语法 pdf python基础语法课程_元组_91


12.进阶文件操作——引入os模块

12.0.项目名字:PythonStudy

对应视频:13.文件操作

12.1.导入os

import os

默认操作目录,是.py文件所在目录

12.2.rename - 重命名

import os
os.rename("a", "b")				# 把文件a命名为文件b

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_92

12.3.remove - 删除

import os
os.remove("a")						# 删除文件a

python 基础语法 pdf python基础语法课程_List_93

12.4.mkdir - 创建文件夹

import os
os.mkdir("dirPath")				# 创建文件夹dirPath

python 基础语法 pdf python基础语法课程_List_94

12.5.rmdir - 删除文件夹

import os
os.rmdir("dirPath")					# 删除文件夹dirPath

python 基础语法 pdf python基础语法课程_字符串_95

12.6.getcwd - 获取当前操作目录

import os
os.getcwd()				# 默认目录是.py文件所在目录

python 基础语法 pdf python基础语法课程_字符串_96

12.7.chdir - 改变当前操作目录

import os
os.chdir("../")							# 改变操作目录,../表示上级目录

python 基础语法 pdf python基础语法课程_元组_97

12.8.listdir - 获取指定目录下所有文件名

import os
os.listdir("dirPath")			# 获取目录下所有文件名
os.listdir()							# 空参时,获取当前操作目录下的所有文件名

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_98


13.异常处理

13.0.项目名字:pythonStudy

对应视频:14.异常处理

13.1.try - except捕获异常

try:
    xxx														   	# 异常代码
except Exception as result:						 # 捕获异常,将异常信息保存到result 
    print(result)

python 基础语法 pdf python基础语法课程_python_99

Exception细化下去,还有类似IOError等错误。

13.2.finally关键字

与java类似,无论如何finally中的内容都会被执行

python 基础语法 pdf python基础语法课程_List_100

由此引出以下例题:

13.3.错误典题

如下代码,希望实现:

在open文件后,利用finally关键字,无论如何都关闭文件

在没有异常时,可以正常执行:

python 基础语法 pdf python基础语法课程_python 基础语法 pdf_101

但是如果在open时出现异常,会有如下情况:

python 基础语法 pdf python基础语法课程_字符串_102