1.前言
1.1 python起源
1999年,创始人:吉多
1.2 解释器
编译型语言:程序员开发完成后,统一交给编译器,编译器统一变异为可执行语言(执行速度快)
解释型语言:解释器从上到下逐一读取每行代码,读取一行,翻译一行,执行一行(执行速度较慢,跨平台能力较强)
1.3 python的设计目标
简单、可读性强、开发速度快
1.4 python的设计哲学
优雅、明确、简单
1.5 为什么选择python
代码量少
1.6 python的特点
完全面向对象(思维方式)的语言
有一个强大的标准库
python社区提供了大量的第三方模块
1.7 python的优缺点
优点:可扩展性
2.1源程序
特殊格式的文本文件,文件扩展名.py
2.2执行python程序的三种方式
python的解释器:python xxx.py # python2.X解释器 python3 xxx.py # python3.X解释器
交互式运行python程序:终端中运行
适合学习/验证python语法或者局部代码,代码不能保存,不适合运行太大的程序
退出解释器:exit() 或者使用ctrl+D
IPython:python的交互式shell,支持自动补全,支持自动缩进,支持bash shell命令,内置很多功能和函数
2.3 python的IDE(集成开发环境)--PyCharm
2.4 文件名只使用小写字母、数字和下划线;不能使用数字开头
2.5 注释
单行注释:# 后边增加一个空格,再编写响应注释
代码后面增加注释,注释和代码之间至少要有两个空格
多行注释:
# 单行注释1
print("Hello") # 单行注释2
"""
多行注释
第二行
"""
'''
多行注释
第二行
'''
2.6算术运算符
加、减、乘(*)、除(/)、取余(%)、取整除(//)、幂(**)
乘法*运算符可应用于字符串,计算结果就是字符串重复制定次数的结果
print("对不起" * 3)
结果:对不起对不起对不起
4.1不同变量之间的计算
1)数字型变量可以直接计算
数字型变量可直接进行算术运算符计算,布尔型变量,true代表1,false代表0
2)字符串变量之间使用+拼接字符串
字符串之间使用+拼接生成一个新的字符串
3)字符串变量可以和整数使用*重复拼接相同的字符串
4)数字型变量和字符串之间不能进行其他计算
5)两个字符串之间不能直接用乘法计算
4.2变量的输入(用代码获取用户通过键盘输入的信息)
1)关于函数
函数 |
说明 |
备注 |
---|---|---|
print(x) |
将X输出到控制台 |
默认会换行 print("*", end= "") # 不会换行 |
type(x) |
查看x的变量类型 |
|
2)input函数实现键盘输入
函数 |
说明 |
---|---|
input("请输入数字1") |
实现键盘输入,用户输入的任何内容都认为是一个字符串 |
语法:字符串变量=input("请输入数字:")
3)类型转换函数
函数 |
说明 |
---|---|
int(x) |
将X转换成一个整数 |
float(x) |
将X转换成一个浮点数 |
4.3变量的格式化输出
包含%的字符串,被称为格式化字符串
格式化字符串 |
含义 |
---|---|
%s |
字符串 |
%d |
有符号十进制,%06d表示输出的整数显示位数,不足的地方使用0补全 |
%f |
浮点数,%.2f表示小数点后只显示两位 |
%% |
输出% |
语法:
print("格式化字符串%s" % 变量1)
4.4变量的命名
1)标识符和关键字
标识符:可以由字母、下划线和数字组成,不能以数字开头,不能与关键字重名
关键字:python内部已经使用的标识符,具有特殊含义和功能
2)变量的命名规则
命名规则可以被视为一种惯例,并无绝对与强制,目的是为了增加代码的识别和可读性
建议:每个单词都是用小写字母,单词与单词之间使用下划线(_)链接
5.1 判断语句
基本语法格式:
if 条件1:
条件1满足执行的代码
elif 条件2:
条件2满足执行的代码
else:
其他条件不满足执行的代码
if的嵌套格式:同时判断多个条件,所有的条件是平级的
if 条件1:
if 条件2:
条件1&条件2满足执行的代码
elif 条件3:
条件3满足执行的代码
else:
其他条件不满足执行的代码
5.2 关系运算符:
运算符 |
描述 |
---|---|
== |
检查两个操作数的值是否 相等,如果是,则条件成立,返回 True |
!= |
检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True |
> |
检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True |
< |
检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True |
>= |
检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True |
<= |
检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True |
5.3 逻辑运算符:可以把多个条件按照逻辑进行连接,变成更复杂的条件
包括:与and 、或or、非not 三种
Pycharm快捷键
Tab键:增加缩进
Tab键+shift:减少缩进
ctrl+/ :增加注释
随机数
import random
random.randint(a,b) # 返回a、b之间的整数,包含a、b
6.1程序的三大流程:顺序、分支、循环
6.2while循环&循环嵌套
i=1
while i<=3:
print(i)
while i<2:
print("123")
i=i+1
break和continue是专门在循环中使用的关键字,只针对当前循环生效
break 某一条件满足时,退出循环,不再执行后续重复的代码
continue 某一条件满足时,不执行后续重复代码
赋值运算符:+=,-=,*=,/=,%=, //=,**=
转义字符:
\t:在控制台输出一个制表符,协助在输出文本时 垂直方向 保持对齐
\n:在控制台输出一个换行符
7.1定义函数的格式如下:
def hanshuming():
"""
函数封装的代码
"""
pass
函数名称:应该能够表达函数邓庄代码的功能,方便后续的调用
函数名称的命名规则:数字、字母与下划线组成,不能使用数字开头,不能使用关键字
7.2使用模块中的函数
模块是Python程序架构的一个核心概念
模块好比是工具包,要想使用这个工具包中的工具,就需要导入import这个模板
每一个以扩展名py结尾的python源代码文件都是一个模块
在模块中定义的全局变量、函数都是模块能够提供给外界直接使用的工具
python中数据类型可以分为数字型和非数字型
数字型:整型(int)、浮点型(float)、布尔型(bool)、复数型(complex):主要用于科学计算,如平面场问题、波动问题等
非数字型:字符串、列表、元祖、字典
在python中,非数字型变量都支持一下特点:
都是一个序列,也可以理解为容器
取值[]
遍历for in
计算长度、最大/小值、比较、删除
链接 + 和重复 *
切片
8.1 列表
列表(list)是python中使用最频繁的数据类型,在其他语言中通常叫做数组。通常用于存储一串信息,用 [ ] 定义,数据之间使用 , 分隔
列表的索引从0开始(索引就是数据再列表中的位置编号,索引又可以被称为下标)
注意:从列表中取值时,如果超出索引范围,程序会报错
定义列表:name_list = []
列表常用操作:
序号 |
分类 |
关键字 / 函数 / 方法 |
说明 |
---|---|---|---|
1 |
增加 |
列表.insert(索引, 数据) |
在指定位置插入数据 |
列表.append(数据) |
在末尾追加数据 |
||
列表.extend(列表2) |
将列表2 的数据追加到列表 |
||
2 |
修改 |
列表[索引] = 数据 |
修改指定索引的数据 |
3 |
删除 |
del 列表[索引] |
删除指定索引的数据 |
列表.remove[数据] |
删除第一个出现的指定数据 |
||
列表.pop |
删除末尾数据 |
||
列表.pop(索引) |
删除指定的索引数据 |
||
列表.clear |
清空列表 |
||
4 |
统计 |
len(列表) |
列表长度 |
列表.count(数据) |
数据在列表中出现的次数 |
||
5 |
排序 |
列表.sort() |
升序排序 |
列表.sort(reverse=True) |
降序排序 |
||
列表.reverse() | |
逆序、反转 |
列表遍历:for 循环内部使用的变量 in 列表
list_param = ["1","2"]
for i in list_param:
print(i)
关键字、函数和方法
关键字是python内置的、具有特殊意义的标识符,关键字后面不需要使用括号
函数封装了独立功能,可以直接调用,函数需要死记硬别,记住函数名称。如:函数名(参数)
方法和函数类似,同样是封装了独立的功能,方法需要通过对象来调用,表示针对这个对象要做的操作,如:对象.方法名(参数)
8.2 元组
Tuple(元组)与列表类似,不同之处在于元组的元素不能修改
元组表示多个元素组成的序列
用于存储一串信息,数据之间用 , 分隔
元组用 () 定义
元组的索引(数据在元组中的位置编号)从0开始
元组中只有一个元素时,需要再元素后面添加逗号
info_tuple = () # 创建空元组
info_tuple = ("1", "2") # 创建空元组
info_tuple[0] # 取值
info_tuple.index("2") # 已知数据的内容,希望知道该数据在元组中的索引
info_tuple.count("2") # 统计出现的次数
len(info_tuple) # 统计元组中包含元素的个数
循环遍历:for 循环内部使用的变量 in 列表
list_param = ("1","2")
for i in list_param:
print(i)
在python中,可以使用for遍历循环所有非数字型类型的变量:列表、元组、字典以及字符串
提示:在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
应用场景:
函数的参数和返回值,一个函数可以接受任意多个参数,或者一次返回多个数据
格式字符串,格式化字符串后边的 () 本质上就是一个元组
让列表不可以被修改,以保护数据安全
# 格式化字符串
info = ("zhangsan",18)
print("%s 的年龄是 %d" % info)
元组和列表之间的转换
使用list函数可以把元组转换成列表
list(元组)
使用tuple函数可以把列表转换成元组
tuple(列表)
8.3 字典
字典是除了列表以外python中最灵活的数据类型,用来存储多个数据,通常用于存储描述一个物体的相关信息
字典无序的对象集合,列表是有序的对象集合
字典以 { } 定义
字典使用键值对存储数据,键值对之间使用 ,分隔,键和值之间使用 :分隔
键key:是索引,必须是唯一的,只能使用字符串、数字或元组
值value :数据,可以是任何数据类型
常用操作:
dic_info={
'name':'小明',
'age':18,
'gender':True
}
# 取值 如果指定的key不存子啊,程序会报错
dic_info["name"]
# 增加或修改 如果key不存在,会新增键值对;如果key存在,会修改已经存在的键值对
dic_info["name"] = "小小"
dic_info["firstname"] = "小"
# 删除 删除时,如果key不存在,程序会报错
dic_info.pop("name")
# 统计键值对数量
len(dic_info)
# 合并字典 如果合并的字典中包含已经存在的键值对,会覆盖原有的键值对
temp_dict = {"weight":90}
dic_info.update(temp_dict)
# 清空字典
dic_info.clear()
# 循环遍历
for k in dic_info:
print("%s-%s" % (k, dic_info[k]))
应用场景:将多个字典放在一个列表中,再进行遍历
xiaoming = [
{'name':'小明',
'age':18,},
{'gender':True,
'height':1.75}
]
for xiaoming_info in xiaoming:
print(xiaoming_info)
8.4 字符串
字符串是一串字符,字符串是 Python 中最常用的数据类型。我们可以使用引号 '或" 来创建字符串,一般都使用"定义
实际开发中,如果字符串内部需要使用",可以使用'来定义字符串。如果字符串内部需要使用’,可以使用"来定义字符串
可以使用索引获取指定位置的字符,索引从0开始。可以使用for循环遍历每一个字符
str = "hello hello"
# 统计字符串长度
len(str)
# 统计某个小(子)字符串出现的次数
str.count("llo")
# 获得子字符串第一次出现的索引
str.index("llo")
常用操作:
1)判断类型-9
2)查找和替换-7
str = "hello world"
str.startswith("hello")
str.endswith("world")
# index方法指定的字符串不存在会报错,find方法会返回-1
str.find("llo")
str.find("adc")
str.replace("world","python")
3)大小写转换-5
5)去除空白字符-3
7)切片
#字符串切片(切片方法适用于字符串、列表、元组)
str="0123456789"
#截取从2~5位置的字符串
print(str[2:6])
#截取从2~末尾的字符串
print(str[2:])
#截取从开始~5位置的字符串
print(str[:6])
#截取完成的字符串
print(str[:])
#从开始位置,每隔1个字符截取字符串
print(str[::2])
#从索引1开始,每隔1个取一个
print(str[1::2])
#截取从2~末尾-1的字符串
print(str[2:-1])
#截取字符串末尾两个字符
print(str[-2:])
#字符串逆序输出
print(str[::-1])
9.1内置函数
内置函数:不需要import 关键字导入任何模块,可以通过函数名直接调用的函数
函数 |
描述 |
备注 |
---|---|---|
len(item) |
计算容器中元素的个数 |
可以统计列表或者元组中元素的个数,字符串中字符的个数,字典中键值对的个数 |
del(item) |
删除变量 |
del有两种方式:1、在del后跟上空格 2、del后跟上括号 |
max(item) |
返回容器中元素最大值 |
如果是字典,只针对key比较,不对值进行比较 |
min(item) |
返回容器中元素最小值 |
如果是字典,只针对key比较,不对值进行比较 |
9.2切片
描述 |
python表达式 |
结果 |
支持的数据类型 |
---|---|---|---|
切片 |
"0123456789"[::-2] |
"97531" |
字符串、列表、元组 |
9.3运算符
运算符 |
python表达式 |
结果 |
描述 |
支持的数据类型 |
---|---|---|---|---|
+ |
[1,2]+[3,4] |
[1,2,3,4] |
合并 |
字符串、列表、元组 |
* |
["hi"]*4 |
["hi","hi","hi",:"hi"] |
重复 |
字符串、列表、元组 |
in |
3 in (1,2,3) |
True |
元素是否存在 |
字符串、列表、元组、字典 |
not in |
4 not in (1,2,3) |
True |
元素是否不存在 |
字符串、列表、元组、字典 |
> >= ==< <= |
(1,2,3) <(2,2,3) |
True |
元素比较 |
字符串、列表、元组 |
in 在对字典操作时,判断的是 字典的键
in和not in 被称为 成员运算符
运算符 |
描述 |
实例 |
---|---|---|
in |
如果在指定的序列中找到值返回True,否则返回False |
3 in (1,2,3,) 返回True |
not in |
如果在指定的序列中没有找到值返回True,否则返回False |
3 not in (1,2,3,) 返回False |
9.4 for循环
for关键字下方再增加 else 关键字,else下方保证集合内部所有的元素遍历完成才会执行,一旦在循环体内部使用了break退出循环,else下方的代码就不会被执行
在python 中完整的for循环语法如下:
'''
for 变量 in 集合
循环体代码
else:
没有通过 break 退出循环,循环结束后,会执行的代码
'''
for num in [1,2,3]:
print(num)
if num ==2:
break
else:
# 如果循环体内部使用break 退出了循环, else下方的代码就不会被执行
print("会执行吗?")
print("循环结束")
10.1 引用
变量和数据 是分开存储在内存中的;数据 保存在内存中的一个位置,变量 中保存着数据在内存中的地址。
变量 中 记录数据的地址,就叫 引用
使用 id() 函数可以查看变量中保存数据所在的 内存地址
如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用
变量 不再 对之前的数据引用
变量 改为 对新赋值的数据引用
引用的应用场景:函数调用、函数的返回
10.2 可变和不可变类型
不可变类型:内存中的数据不允许被修改
数字类型:int、bool、float、complex、long(2,x)
字符串:str
元组:tuple
可变类型:内存中的数据可以被修改,数据的变化是通过方法来实现的
列表:list
字典:dict(字典的key只能使用不可变类型的数据)
如果给一个可变类型的变量赋值了一个新的数据,引用会修改,变量不再对之前的数据引用,改为对新赋值的数据引用
10.3 哈希(hash)
10.4 局部变量和全局变量
在函数内部定义的变量,不能再其他位置使用
局部变量的生命周期(被创建到被系统回收的过程)
局部变量在函数执行时才会被创建
函数执行结束后 局部变量 被系统回收
局部变量在生命周期 内,可以用来存储 函数内部临时使用到的数据
全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
提示:在其他的开发语言中,大多不推荐使用全局变量--可变范围太大,导致程序不好维护
在函数内部,可以通过全局变量的引用获取对应的数据,但是不允许直接修改全局变量的引用(使用赋值语句修改全局变量的值)
num=10
def demo():
global num # 函数内使用全局变量
num = 100
print(num)
demo()
全局变量命名:g_num
https://learnku.com/docs/python-tutorial/3.7.0/appetite/3503