1. 安装python环境
-
cmd里面输入python(已经安装如下显示)
-
-
设置全局变量
2. python基础
2.1 python变量
命名规范:
不能以数字、特殊字符开头,不能以关键字命名
英文单词、下划线、数字的组合
first_name_123=''
大驼峰
FirstName
小驼峰
firstName
第一次出现变量名称就是定义,后许多次出现变量名称就是多次赋值
2.2 python数据类型
-
number
-
int <class ‘int’>
num=100 print(num) # 查看类型 print(type(num))
-
float <class ‘float’>
float_1=3.14234 print(float_1) print(type(float_1))
-
bool 要么true,要么false
# 布尔 bool print(bool(float_1)) print(0)
-
-
字符串
-
单引号
-
双引号
-
三引号
-
区别:单引号和双引号都是保存单行的数据,三引号保存多行的数据
name='马可波罗' name="王昭君" name="""李白""" # name='''''' str_1="""妲己说: 来陪妲己玩耍吧! """ print(str_1) str_num="12345" print(type(str_num)) # <class 'str'>
-
特殊索引
# 索引下标示例 str_2="好看的皮囊千篇一律,有趣的灵魂万里挑一" print(str_2) # 单个字符提取 正序:0,1,2... 倒序:-1,-2,-3... # str_2[下标索引数值] print(str_2[0]) # 好 print(str_2[-1]) # 一 # 范围提取 # str_2[起始下标:结束下标-1] 左闭右开[) print(str_2[0:3]) # 好看的 [0:3-1] print(str_2[:]) # 打印的是所有的内容 print(str_2[::]) # 打印的是所有的内容 print(str_2[:5]) # 好看的皮囊 print(str_2[-2:]) #挑一 # 步长 step print(str_2[::2]) # 好的囊篇律有的魂里一 跳着输出 print(str_2[::-1]) # 一挑里万魂灵的趣有,律一篇千囊皮的看好 步长负值,控制正反序 res=str_2[0:5] print(res[::-1]) # 囊皮的看好
-
2.3 python列表
使用[]来标识
-
创建列表方法
# 创建方法一: list_1=list print(list_1) # <class 'list'> print(type(list_1)) # <class 'type'> # 创建方法二: list_2=[] print(list_2) # [] print(type(list_2)) # <class 'list'>
-
创建一个有内容的列表
list_3=['女娲','吕德华','瑶瑶','奕星','芈月'] # 查看元素个数 len() print(len(list_3)) # 5
-
查找,列表进行范围提取,返回的还是列表
print(list_3[1]) # 吕德华 print(list_3[-2:]) # ['奕星', '芈月']
-
更改元素 先定位查找到这个位置,然后在重新赋值
list_3[1]='吕布' print(list_3) # ['女娲', '吕布', '瑶瑶', '奕星', '芈月']
-
批量更改
list_3[0:2]=['李白','王昭君'] print(list_3) # ['李白', '王昭君', '瑶瑶', '奕星', '芈月'] list_3[0:2]='李' # 批量更改等号左边和右边元素个数相同 print(list_3) # ['李', '瑶瑶', '奕星', '芈月']
-
添加元素
-
-
append(需要添加的元素) 只添加到最后一位
list_3.append('孙悟空') list_3.append(1000) list_3.append(100.123) list_3.append(True) list_3.append([1,2,3]) print(list_3) # ['李', '瑶瑶', '奕星', '芈月', '孙悟空', 1000, 100.123, True, [1, 2, 3]]
-
insert(添加的位置,添加的元素) 可以在任意位置进行添加
list_3.insert(1,'钟馗') print(list_3) # ['李', '钟馗', '瑶瑶'...
-
extend(需要填入可迭代内容) 同时添加多个元素
list_4=[[],123,True] list_4.extend(list_4); print(list_4) # [[], 123, True, [], 123, True]
-
拼接
list=list_3+['马可波罗','鲁班','伽罗'] print(list) # list_3+=[] # print(list_3)
-
-
删除
-
-
remove(需要删除的元素):根据列表的元素删除
list_3.remove('李') print(list_3)
-
del:根据列表的下标位置删除元素
del list_3[-6] print(list_3) # del list_3 # 默认删除整个列表,内存中没有list_3变量名 # print(list_3) # NameError: name 'list_3' is not defined
-
clear():清空
list_3.clear() print(list_3)
-
-
排序
list_5=[3,9,5,2,6,8,1,0,7] # list_5.sort() # 默认从小到大进行排序 # print(list_5) list_5.reverse() print(list_5) # [7, 0, 1, 8, 6, 2, 5, 9, 3] # 排序的方法 sort list_5.sort(reverse=False) # reverse=True:从大到小 print(list_5) # [0, 1, 2, 3, 5, 6, 7, 8, 9] # 英文排序 list_6=['hello','world','apple','yellow','red'] list_5.sort() # 根据英文单词首字母排序,如果首字母相同,则排序下一个字母 print(list_6) #['hello', 'world', 'apple', 'yellow', 'red'] # 中文排序 list_7=['你','我','他','啊'] list_7.sort() print(list_7) # ['他', '你', '啊', '我']
-
2.4 元组
常用的存储单元
-
特点:元组内的元素是不可以改变的
-
创建
# 创建 方法一 tuple_1=tuple() print(tuple_1) print(type(tuple_1)) # <class 'tuple'> # 创建方法二 tuple_2=() print(tuple_2) print(type(tuple_2)) # # <class 'tuple'>
-
查找
# 查找 tuple_3=('貂蝉','杨玉环','王昭君','西施') print(tuple_3[0]) print(tuple_3[0:3]) # 元组范围提取,返回的也是元组类型 # 在当前这个元组中,是不能更改,删除,添加
-
转换类型
# 元组转化为列表 list_1=list(tuple_3) print(list_1) # ['貂蝉', '杨玉环', '王昭君', '西施'] list_1.append('妲己') print(list_1) # 列表转化为元组 tuple_3=tuple(list_1) print(tuple_3) # ('貂蝉', '杨玉环', '王昭君', '西施', '妲己') # 进行拼接 tuple_3+=('唐伯虎',) # 在只有一个元素的时候,后面要加一个英文逗号 # tuple_3=tuple_3+() print(tuple_3) # ('貂蝉', '杨玉环', '王昭君', '西施', '妲己', '唐伯虎')
2.5 set集合
去重、无序的
-
创建方式
# 创建方式 set_1=set() print(set_1) # <class 'set'> print(type(set_1)) set_2={'周一','周二','周三','周四','周五'} print(set_2) # {'周四', '周三', '周一', '周五', '周二'}
-
删除
set_2.remove('周五') print(set_2) res=set_2.pop() print('弹出的内容是: ',res) # 弹出的内容是: 周三 print(set_2) # {'周四', '周二', '周一'}
-
添加
set_2.add('周六') print(set_2) # {'周三', '周一', '周二', '周六'}
-
更改
set_2.update('周天') print(set_2) # {'周四', '周六', '周天', '周三', '周一'} set_2.update(['周天']) # {'周', '天', '周天', '周二', '周六', '周四', '周三'} set_2.update(['周八','周十']) print(set_2) # {'周八', '周二', '周', '周六', '天', '周十', '周一', '周四', '周天'}
2.6 字典
他是一个特殊的容器,{key:value,key:value} key是唯一的,value可以存储任意类型
-
创建字典
# 方法一: dict_1=dict() # 方法二: dict_2={} dict_3={"name":"小鲁班","武器":"大炮",100:[1,2,3]} print(dict_3)
-
查找
# 可以把key当成索引下标 print(dict_3['name']) print(dict_3['hobby']) # KeyError: 'hobby' 如果字典没有这个key,查找会报错
-
更改:首先确定字典中有这个key,再赋值就是更改value
dict_3[100]='123'print(dict_3)
-
添加:在这个字典中没有这个key,再赋值就是添加键值对
dict_3['hobby']='上王者' print(dict_3)
-
删除
# del方法 del dict_3[100] print(dict_3)# clear():清空dict_3.clear()print(dict_3)
-
获取所有的key
res=dict_3.keys() # 返回的是一个可迭代对象 res=list(res) # 转化为列表print(res[0])
-
获取所有的value
all_value=dict_3.values() print(type(all_value)) # <class 'dict_values'>
-
获取所有的key和value
all_items=dict_3.items() # 返回的格式 [(key,value),(key,value)] print(all_items)
2.7 字符串补充
-
切割
# y=str1[0:4] # m=str1[5:7] # d=str1[-2:] # print(d) res=str1.split('-') print(res) # ['2021', '11', '14'] str2="9:57:10" print(str2.split(':')) # ['9', '57', '10']
-
去除收尾空格
str1=" hello world " # print(str1[6:-5]) # 去除两边空格 res=str1.strip() print(res) # hello world # 去除左边空格换行 lres=str1.lstrip() print(lres) # hello world # 去除右边空格 rres=str1.rstrip() print(rres) # hello world
-
替换
str1="我是:xxx" print(str1) res=str1.replace('xxx','张三').replace('我','你') print(res) # 你是:张三 str1=' hello world ' res=str1.replace(' ','') print(res) # helloworld
-
格式化输出 %s:传递转化为字符串 %d:传递转化为整数 %f:传递转化为小数
str1="我是:%s" print(str1) # 我是:%s print(str1%'法外狂徒·张三') # 我是:法外狂徒·张三 print(str1%'尼古拉斯·赵四') # 我是:尼古拉斯·赵四 print(str1%['生活有判头']) # 我是:['生活有判头'] str1="我的薪资是:%d美元" print(str1) # 我的薪资是:%d美元 print(str1%1000) # 我的薪资是:1000美元 print(str1%999.789) # 我的薪资是:999美元 str1='我的房间面积是:%f平米' print(str1) # 我的房间面积是:%f平米 print(str1%150) # 我的房间面积是:150.000000平米 print(str1%150.23) # 我的房间面积是:150.230000平米 print(str1%150.123456778) # 我的房间面积是:150.123457平米
-
fomat
str1='我是:{},我在:{},我喜欢:{}' print(str1) # 我是:{},我在:{},我喜欢:{} print(str1.format('李四','河南','跑步')) # 我是:李四,我在:河南,我喜欢:跑步
2.8 运算
-
运算符
+(加)、-(减)、*(乘)、/(除)、%(取余)、//(取商)
print(1//2) # 0 print('==='*10) # ============================== print(['张三']*10) print(['张三','李四']*10)
-
关系运算
< > >= <= == != 只返回两个值True或False
-
逻辑运算
and(一假都假) or(一真都真) not(取反)
2.9 分支结构
1. if 条件表达式:
代码块…
else
代码块2…
条件表达式:只返回两个值
True:正数与负数、其他的所有不为空的字符串、列表、元组、set集合、字典
False:0、None、null、其他所有为空的字符串、列表、元组、set集合、字典
# 正确
a=1
if a<2:
print('正确')
else:
print('错误')
# 正确
if [0]:
print('正确')
else:
print('错误')
# 错误
if 1<2 and 3<2:
print('正确')
else:
print('错误')
# 正确
if [] or [0]:
print('正确')
else:
print('错误')
# 正确
if not [] :
print('正确')
else:
print('错误')
-
多重判断
if 条件表达式:
代码块
elif 条件表达式:
代码块
elif 条件表达式:
代码块
else:
代码块
# 第一个条件表达式正确 if True: print('第一个条件表达式正确') elif True: print('第二个条件表达式正确') elif True: print('第三个条件表达式正确') else: print('第四个条件表达式错误')
-
嵌套
a=5 b=10 if a<b and a*10<=50: a+=10 b*=5 if a==b: print('正确') else: print('错误')
2.10 循环结构
1. for 自定义变量 in 可迭代对象:
循环体
list_1=['周一','周二','周三','周四','周五','周六','周日']
for i in list_1:
print(i)
-
while 循环
while 条件表达式:
循环体
结束语句
a=1 while a<10: print(a) a+=1
-
break:结束当前循环
continue:跳出当前循环,继续下一循环
list_1=['周一','周二','周三','周四','周五','周六'] # 周三、周四不打印 for i in list_1: if i=='周三' or i=='周四': continue print(i) # 只打印五、六 a=1 while a<10: a+=1 if a<5 or a>6: continue print(a)
2.11 函数
有特定功能,完成指定任务的一段代码块
- 为什么使用?
- 可以隐藏代码的实现
- 提高代码的复用性
- 提高代码的可读性、可维护性
- 函数的定义:
del 自定义变量名(参数1,参数2…)
函数体
return
# 创建加法函数功能
def addition(a,b):
# 使用参数a加上参数b得到结果赋值给c这个变量
c=a+b
return c
# 调用函数
print('传入参数')
res=addition(10,20)
print(res)
-
参数
形参:形式上的参数,并没有实际的意义。也可以称之为占位符
实参:实际的参数值,在调用函数出现
-
传递参数的方法
-
位置传递:按照位置的先后顺序进行传递参数
-
关键字传递:在调用地方,传递变量值,通过变量名称去定义函数地方找寻,看有没有相对性的关键字,如果无,则报错,如果有,则把变量值赋值给关键字
res_2=addition(b=30,a=50) print(res_2)
-
-
return
返回一个值:默认这个值是什么类型就返回什么
返回多个值:默认是元组类型
# 创建加法函数功能 def addition(a,b): # 使用参数a加上参数b得到结果赋值给c这个变量 c=a+b return c,c,c # 返回多个值 # 调用函数 print('传入参数') res=addition(['hello'],['world']) print(res) # (['hello', 'world'], ['hello', 'world'], ['hello', 'world'])--》元组类型
自定义返回值:自定义设定返回类型
return [c] .... print(res) # [['hello', 'world']]-->自定义
-
深入理解
def a(): print('a函数启动') d() print('a函数结束') def b(): print('b函数启动') print('b函数结束') def c(): print('c函数启动') b() print('c函数结束') def d(): print('d函数启动') c() print('d函数结束') a() # 函数从那个地方调用,运行执行完后还会回到调用出 # 栈:先进后出
2.12 类对象
类:类别,物以类聚。有相同属性和相同行为的事物统称为类
对象:在类中的一个具体事例称为对象
实例化:从类生成对象的一个过程
-
定义类
class 自定义名()
定义属性
定义行为(类方法、函数)
# 定义一个学生类 class Student(): # 定义属性 name="" age=0 userid="" # 定义行为 def eat(self): # self:谁调用这个方法,谁就是self print(self.name,'正在吃饭') self.sleep() def sleep(self): print(self.name,'正在休息') # 创建对象 zhangsan=Student() # 对象访问属性 # 对象名.属性名 zhangsan.name='张三' zhangsan.age=20 zhangsan.userid='007' print(zhangsan.name) # 对象访问行为方法 # 对象名.方法名 记得加括号,不加括号意思为查看一些方法信息 print(zhangsan.eat) zhangsan.eat() # 创建第二个对象 lisi=Student() lisi.name="李四" lisi.age=18 lisi.userid="001" lisi.eat()
2.13 初始化方法
运行类的第一个启动方法就是初始化方法
即使我们没有写初始化方法,也会默认继承object类的初始化方法
# 创建类
class Student(object):
def __init__(self,name,age,userid):
print('我是一个初始化方法')
# 在类里面构造属性
self.name=name
self.age=age
self.userid=userid
def eat(self):
print('正在吃饭')
# 调用类创建对象
zhangsan=Student('张三',20,'007')
print(zhangsan.name)