(一)Python简介
1、Python是一种解释型、交互式、面向对象、动态数据类型的高级程序设计语言。Python语言是由Guido Van Rossum于1989年开发的,于1991年发行第一个公开发行版。2020年1月1日,停止Python 2的更新。Python2.7被确定为最后一个Python 2.x版本。
2、Python应用:
(1)Python是用来编写应用程序的高级编程语言;且提供了非常完善的基础代码库,以及大量的第三方库,可直接调用;
(2)许多大型的网站用Python开发的,例如:国外的YouTube、国内的豆瓣等等。
(3)Python适合开发网络应用,包括网站、后台服务等等。
3、编程语言
(1)编译型语言,使用的转换工具称为编译器,要求必须提前将所有源代码一次性转换成二进制指令,生成一个可执行程序,比如C语言、C++、go等等;
(2)解释性语言,使用的转换工具称为解释器,边执行边转换,不会生成可执行程序,比如Python、JavaScript、PHP、Shell等等
(3)编译型语言和解释型语言执行图如下,摘自来源:http://c.biancheng.net/view/4136.html
(二)安装Python(建议安装Python+Pycharm专业版)
1、登录Python官网下载适合自己的版本型号:https://www.python.org/
2、登录pycharm官网进行下载:https://www.jetbrains.com/pycharm/download/#section=windows
3、Python和Pycharm的区别:
(1)Python是一种计算机程序设计语言,是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,逐步的被用于独立的、大型项目的开发;
(2)Pycharm是Python的专用IDE,类似于Java的IDE Eclipse。功能齐全的集成开发环境同时提供社区版(免费版)和专业版(收费版)。
4、安装成功后,可以在菜单中看到安装好的Python,也可以在Windows命令cmd,输入命令“Python”,可以进入Python shell模式,如图所示:
5、若提示:“Python”既不是内部命令,又不是外部命令,这时需要把Python的安装目录添加到系统变量Path中,操作如下:(例如:Windows 10)
右击桌面的“此电脑”,打开右键菜单,单击“属性”->高级系统设置->高级->环境变量,在系统变量中的Path添加:
变量名:Path
变量值:;C:Python37
6、Windows机器上,通常安装在【C:Python37】位置,若想把此目录添加到你的PATH环境变量中,可以cmd打开DOS窗口输入下面的命令执行:
set path=%path%;C:python37
7、在DOS窗口中输入文件结束符:
Unix系统为:Ctrl+D;Windows系统是:Ctrl+Z,若没有作用,通过输入quit()命令退出解释器。
(三)Python的不同打开方式
1、启动Python终端会话,提示符以>>>出现如图:
2、启动Python自带的IDLE运行交互式环境,如图:
3、启动pycharm版本,根据你自己安装的版本打开并创建自己的项目,如图:
(四)基本设置及操作
1、Git与SVN的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,协同工作的人们通过客户端连到这台服务器,取出最新的文件或者提交更新,管理者可以掌握每个开发者的权限,但只能通过联网才能工作,一旦服务器瘫痪,所有人都无法工作;
Git是分布式版本控制系统,没有中央服务器,客户端并不只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。
补充:pycharm配置Git,方便代码上传到码云管理:需要下载Windows版本的Git,下载地址:https://desktop.github.com/
2、安装git,下载地址:https://git-scm.com/download/win因为下载Git客户端非常慢,最有效的解决方法:
(1)在Elements界面中,找到下载链接
(2)复制下载链接到迅雷去下载:
(3)安装git客户端
(4)pycharm配置Git,File->Settings
(5)Settings->Version Control->Git ->Path to Git executable,选择Git本地安装路径:
(6)VCS->Check from Version Control->Git
(7)克隆仓库,需填写Git仓库地址
3、Windows,如果要使用git拉代码,需要安装git客户端(如上面的截图操作)
Mac,需要在命令里面输入Git命令,如果没有会自动安装
4、输入输出
(1)输出,代码如下:
print() # print("Hello world!")
(2)输入,可以让用户输入字符串,并存放一个变量里
input()
5、Python 2 和 Python 3 的区别
(1)使用print输出数据
Python 2.x 用print语句,如:
print"hello world"
Python 3.x 用print函数,如:
print("hello world")
(2)编码格式
Python 2.x 默认采用ASCII编码,Python 3.x默认使用UTF-8,可以支持中文或其它非英文字符。
(3)除法运算:/ 和 //
Python 2.x 使用运算符 / 进行除法运算,整数相除的结果是个整数,浮点数除法保留小数点部分;Python 3.x 使用运算符 / 除法运算,整数之间做除法运算,结果也是浮点数;
Python 2.x 和 python 3.x 使用运算符 // 输出结果不大于结果值的一个最大的整数(向下取整);
(4)异常处理
Python 2.x 所有类型的对象都是直接被抛出的,Python 3.x 只有继承BaseException 的对象才可以被抛出;
Python 2.x 捕获异常的语法是“except Exception, var:”,Python 3.x 引入了as关键字,捕获异常的语法变更为“except Exception as var:”
Python 3.x 处理异常“raise Exception(args)” 代替了 “raise Exception,args”
Python 3.x 取消了异常类的序列行为和 .message属性
(5)八进制字面量表示:python 3.x 表示八进制字面量的方式只有1中,必须写成“0o1000”这样的方式,之前的“01000”的方式不能用了
(6)不等于运算符:Python 2.x 不等于运算符有2中写法,分别为 != 和 <> ,Python 3.x 中只有 != 这种写法
(7)数据类型
Python 3.x 去除了long类型,只有整型 int
Python 3.x 新增了bytes类型
Python 3.x 字典的keys()、items()和value()方法用返回迭代器,之前的iterms()key()等函数被废弃,去掉dic.has_key(),改为用 in 替代。
6、Python注释(多行注释和单行注释)
(1)单行注释,语法格式(说明多行代码的功能时,一般将注释放在代码的上一行;说明单行代码时一般将注释放在代码的右侧):
# 注释内容
(2)多行注释,使用三个连续的单引号'''或者三个连续的双引号"""注释多行内容:
''' hello hello hello '''
(五)Python操作符
1、数学操作符:
操作符 | 操作 | 例子 | 求值为 |
** | 指数 | 2**3 | 8 |
% | 取模|取余数 | 25%4 | 1 |
// | 整除|商数取整 | 36//5 | 7 |
/ | 除法 | 36/8 | 4.5 |
* | 乘法 | 2*3 | 6 |
- | 减法 | 5-3 | 2 |
+ | 加法 | 1+2 | 3 |
2、数据类型:整型(int)、浮点型(float)、字符串(str)
数据类型 | 例子 |
整型(int) | -2,-1,0,1,2,3,4,5,6,7,8,9 |
浮点型(float) | -1.35,-1.0,0.0,0.5,1.0,1.75 |
字符串(str) | 'a','aa','aaa','hello world' |
3、字符串连接和复制
(1)在操作两个整形或浮点型值时,+是相加操作符;用于两个字符串时,+将两个字符串连接起来,成为“字符串连接”操作符;
(2)两个整型或浮点型值时,*表示乘法;*操作符用于一个字符串值和一个整型值时,变成了“字符串复制”操作符;
4、标识符和保留字符
(1)标识符:标识符由字母、数字、下划线组成,不能以数字开头,标识符区分大小写;
(2)保留字符不能用作常数或变数,或任何其他标识符名称,如表格所示:
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
as | false | nonlocal |
None | True |
5、Python 3.x 中所有的内置函数,截图摘自:http://c.biancheng.net/view/4208.html
(六)变量类型和运算符
1、变量:将数据放入变量的过程叫做赋值。Python使用等号 “=” 作为赋值运算符,name表示变量名,value表示值,格式为:
name = value
2、运算符
(1)整数类型(int)
(2)小数/浮点型(float)
(3)复数类型(complex):复数由实部(real)和虚部(imag)构成,a表示实部,b表示虚部,复数的格式为:
a + bj
例如:
3、字符串:由双引号或单引号包围,双引号和单引号没有任何区别,格式为:
"nihao" 'hello'
4、布尔类型:表示真(对)或假(错),例如:
5、格式化字符串:print()函数使用%开头的转换说明符对各种类型的数据进行格式化输出,摘自图:http://c.biancheng.net/view/2177.html
6、转义字符,截图摘自:http://c.biancheng.net/view/2176.html
7、数据类型转换,截图摘自:http://c.biancheng.net/view/4243.html
8、位运算符,截图摘自:http://c.biancheng.net/view/2184.html
9、比较运算符,截图摘自:http://c.biancheng.net/view/4258.html
10、逻辑运算符,截图摘自:http://c.biancheng.net/view/2186.html
11、三目运算符(三元运算符),condition是判断条件,exp1和exp2是两个表达式,结果为真,执行exp1结果为假,执行exp2,格式:
exp1 if condition else exp2
max = a if a>b else b
12、运算符优先级和结合性,截图摘自:http://c.biancheng.net/view/2190.html
(1)运算符优先级:
(2)运算符结合性:多个优先级相同的运算符,先执行左边的叫左结合性,先执行右边的叫右结合性。
(七)流程控制
1、if else条件语句:使用 if else 语句对条件进行判断,根据不同的结果执行不同的代码,称为选择结构或者分支结构。细分三种形式:if 、if else 、 if elif else 语句。
(1)if 语句形式,如图是 if 表达式代码块:
实例1:
(2)if else语句,if else 表达式代码块如图所示:
实例2:
(3)if elif else 语句,if elif else 表达式代码块如图所示:
实例3:
小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮助小明计算他的BMI,并根据BMI指数:
低于18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于32:严重肥胖
(4)缩进的要求:Python是以缩进来标记代码块的,代码块一定要有缩进,但没有要求缩进量。建议1Tab键的位置或者4个空格。
(5)if 语句嵌套
# 最简单的 if 语句中嵌套 if else 语句 if 表达式 1: if 表达式 2: 代码块 1 else: 代码块 2
# if else 语句中嵌套 if else 语句 if 表达式 1: if 表达式 2: 代码块 1 else: 代码块 2 else: if 表达式 3: 代码块 3 else: 代码块 4
2、循环语句分为:while循环、for循环、嵌套循环(循环又叫迭代,遍历)
2.1 while 循环:判断条件为真时执行循环体,否则退出循环体(while循环需要定义计数器,每次循环计数器增加,否则就会变成死循环)
while 条件表达式 代码块 # 循环体
实例:跑圈,计算心率和圈数
2.2 for 循环:重复执行语句
for 迭代变量 in 字符串| 列表 | 元组 | 字典 | 集合: 代码块 # 循环体
实例:
2.3 break 语句
break 语句 用来终止循环语句的,循环语句中遇到break循环立即结束。
2.4 continue 语句:跳出本次循环,而break是跳出整个循环。
continue 语句:结束本次循环,然后继续进行下一轮循环。
实例:
2.5 循环else用法,无论是while循环还是for循环,都可以紧跟着一个else代码块,当循环正常结束后,程序会执行else代码块中的代码。
实例:图例中本来需要循环10次,然后循环了10次,循环结束,这就是正常结束循环,会执行else代码块。
2.6 嵌套循环:嵌套就是一条语句中还有另外一条语句,例如for循环中有for循环,while循环中含有while循环,再或者是while循环中有for循环,for循环中还有while循环等等。
实例:
2.7 pass语句:是空语句,为了保持程序结构的完整性。一般用做占位语句。
pass
实例:
2.8、assert语句:称为断言语句,用于判断某个表达式的值,如果为真,则程序继续往下执行,反之报AssertionError错误。通常用于检查用户的输入是否符合规定,经常用作程序初期和调试过程中的辅助工具。
assert 表达式
if 表达式 == True: 程序继续执行 else: 程序报AssertionError
实例:
2.9、zip函数
zip() 可以将多个序列(列表、元组、字典、字符串以及range()区间构成的列表),“压缩”成一个Zip对象,就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。
zip()函数的语法格式为:
zip(iterable,...)
实例:
2.10、reverse函数:是Python内置函数,对于给定的序列(包括列表、元组、字符串以及range(n)区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列)。
reversed(seq) # seq 可以是列表、元素、字符串以及range()生成的区间列表
实例:
2.11、sorted函数:作为Python内置函数之一,功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。
list = sorted(iterable,key=None,reverse=False)
# iterable表示指定的序列,key可以自定义排序规则,reverse参数指定以升序(False,默认)还是降序(True)进行排序。
实例:
2.12、range()函数:可以创建一个整数列表,一般在for 循环中
range(start, stop[, step])
# start:计数从start开始,默认是从0开始。
# stop:计数从stop结束
# step:步长,默认为1
实例:
(八)序列(sequence)是指按特定顺序依次排列的一组数据。序列类型包括:列表(list)、元组(tuple)、字典(dict)和集合(set),但集合和字典不支持索引、切片、相加和相乘操作。
1、列表 list
1.1 通过 type() 函数可以查看到数据是什么类型
1.2 使用 [ ] 创建列表后,一般使用 = 将它赋值给某个变量,具体格式如下:
listname = { element1, element2, element3,..., elementn}
# listname 表示变量名,element1 ~ elementn 表示列表元素。
number =[1,3,5,7,9,11]
创建列表,也可以一个元素都没有:
emplist[ ]
1.3 使用list()函数创建列表
# 将字符串转换成列表 list1 = list('hello') print(list1)
#将元组转换成列表
tuple1 = ('Python', 'Java', 'C++', 'JavaScript')
list2 = list(tuple1)
print(list2)
#将字典转换成列表
dict1 = {'a':100, 'b':42, 'c':9}
list3 = list(dict1)
print(list3)
#将区间转换成列表
range1 = range(1, 6)
list4 = list(range1)
print(list4)
#创建空列表
print(list())
1.4 访问列表元素:可以用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是新的子列表)
(1)使用切片访问列表元素的格式为:
listname[start : end : step]
# listname 表示列表名字,start 表示起始索引,end表示结束索引,step表示步长
students = ‘Mary, Jack, Amy’ # 数组、列表、list students = [ ‘Mary, Jack, Amy’] # 0 1 2 # 编号、索引、下标、角标 print(students[1]) print(students)
1.5 删除列表:del 关键字删除
del listname
1.6 添加元素:append()方法
listname.append(obj)
students = [ ‘Mary, Jack, Amy’] students.append('Helen') # 在列表的末尾添加元素 print(students)
1.7 添加元素:extend() 方法 (extend与append不用的之处是,extend不会把列表或元组视为一个整体,而是把他们包含的元素逐个添加到列表中)
listname.extend(obj) students = [ ‘Mary, Jack, Amy’] students.extend('Nancy')
1.8 插入元素:insert() 方法
listname.insert(index,obj) students = [ ‘Mary, Jack, Amy’] students.insert(0,'Ted')
1.9 删除元素:del 关键字或者pop()方法、remove()方法、clear()方法
(1)del 关键字,执行删除操作,可以是整个列表,也可以是列表中的某些元素
del listname[index] # 可以删除列表中的单个元素 del listname[start : end] # 可以删除中间一段连续的元素
(2)pop() :删除列表中指定索引处的元素
listname.pop(index) # listname表示列表名称,index表示索引值,默认删除列表中最后一个元素
(3)remove():根据元素值进行删除
nums = [40, 36, 89, 2, 36, 100, 7] #第一次删除36 nums.remove(36) print(nums) #第二次删除36 nums.remove(36) print(nums)
(4)clear() :删除列表所有的元素
list=[12,54,236,123] list.clear() print(list)
1.10 list 列表修改元素
(1)修改单个元素
nums = [40, 36, 89, 2, 36, 100, 7] nums[2] = -26 #使用正数索引 nums[-3] = -66.2 #使用负数索引 print(nums)
(2)修改一组元素
nums = [40, 36, 89, 2, 36, 100, 7] #修改第 1~4 个元素的值(不包括第4个元素) nums[1: 4] = [45.25, -77, -52.5] print(nums)
1.11 list 列表查找元素,用index()和count()方法,用来查找元素
(1)index()方法:用来查找某个元素在列表中出现的位置,若不存在报ValueError错误。
listname.index(obj, start, end) # listname 为列表名称 # object 为要查找的元素 # start 表示起始位置 # end 表示结束位置
(2)count() 方法:用来统计某个元素在列表中出现的次数
listname.count(obj)
注意:若count() 返回0,说明列表中不存在该元素,count()也可以用来判断列表中的某个元素是否存在。