一 列表
定义:在[ ]内,可以存放多个任意类型的值,并以逗号隔开。
一般用于存放学生的爱好,课堂的周期等等。
定义一个学生列表,可存放多个学生
student_info=['sjk','合计',19,['吃','睡']]#取同学的所有爱好print(student_info[3])#取同学的第二个爱好print(student_info[3][1])
列表优先掌握的操作 1按索引存取值(正反向取存):即可存也可以取
print(student_info[-2]) #19
2切片(顾头不顾尾)
print(student_info[0:4:2]) #['sjk', 19]
3长度
print(len(student_info)) #4
4成员运算in和not in
print('sjk' in student_info)#Trueprint('sjk' not in student_info)#False
5追加 在列表追加一个值
student_info.append('张铁柱,sanquan') #['sjk','合计', 19, ['吃', '睡'], '张铁柱,sanquan']
6删除 删除索引的值
del student_info[1] print(student_info)#['sjk',19['吃','睡'],'张铁柱','sanquan']
列表需要掌握的操作
student_info=['sjk','合计',19,['np','yb'],19]
1获取列表中某个值的索引
student_info.index(19)#2
2获取列表中某个值的数量
student_info.count(19)#2
3取值 默认取列表中最后一个值
若pop()括号中写了索引,则取索引对应得值
student_info.pop()print(student_info)#19student_info.pop(0)print(student_info)#'sjk'
4移除 把列表中的某个值的第一个值移除
student_info.remove(19)print(student_info)#['sjk','合计',['np','yb'],19]name=student_info.remove('sjk')print(name)print(student_info)#error
5插入值
student_info=['sjk','合计',20,['np','yb'],56]student_info.insert(3,'888')print(student_info)#['sjk','合计',20,['np','yb'],56,3,'888']
6extend 合并列表
student_info1=['sji',47,['吃','睡'],47]student_info2=['djk',38,['玩','乐']]student_info1.extend(student_info2)print(student_info1)#['sji',47,['吃','睡'],47,'djk',38,['玩','乐']]
二 元组
定义:在()中,可以存放多个任意类型的值,并用逗号隔开
注意: 元祖与列表不同的是,只能在定义时初始化值,不能对其修改
优点: 在内存中占用资源比列表小
定义
tuplel=(1, 2, 3, 'wu', 'liu')print(tuplel)#1, 2, 3, 'wu', 'liu'
1正反向取值 (正向取+反向取)只能取
print(tuplel[2])#3
print(tuplel[0:5:2]) #[1,3,'liu']
print(len(tuplel)) #5
4成员运算in和not in
print(1 in tuplel) #Trueprint(1 not in tuplel)#False
for line in tuplel: #print(line) #1 2 3 'wu' 'liu' #print默认end参数是\n print(line,end='_')#1_2_3_'wu'_'liu'_
可变类型与不可变类型:
不可变类型(值修改后,内存地址一定不一样): 数字类型:int,float 字符串类型:str 元组类型:tuple 可变类型(值修改后,内存地址一样): 列表类型:list 字典类型:dict
三 字典
作用:在{}内,可存放多个值,以key_value存取,取值速度快
注意:key必须是不可变类型,value可以是任意类型
dict1=dict({ 'age':18,'name':'sjj'})#dict1={'age':18,'name':'tank'}print(dict1)#{'age':18,'name':'tank'}
取值,字典名+[],括号内写值对应的key
print(dict1['age'])#18
#[]取值 #print(dict1['sex']) #error #get取值 (推荐)print(dict1.get('sex')) #None #若找不到sex,为其设置一个默认值 print(dict1.get('sex','male'))
优先掌握的操作 1可存取
#存一个level:9的值到dict1字典中dict1['level']=9 print(dict1) #{'age':18,'name':'tank','level':9}print(dict1['name']) #tank
2长度
3成员运算in和not in 只判断字典中的key
print('name' in dict1) #Trueprint('tank' in dict1) #False
4删除
del dict1['level'] print(dict1) #{'age':18,'name':'tank'}
5建keys(),值 value(),键值对items()
#得到字典中所有key print(dict1.keys()) #得到字典中所有值values print(dict1.values()) #得到字典中所有items print(dict1.items()) #dict_keys(['age', 'name']) #dict_values([18, 'sjj']) #dict_items([('age', 18), ('name', 'sjj')])
6循环
for it in dict1: print(it) print(dict1[it]) #age #18 #name #sjj
四 流程控制 if 判断 语法: if 判断条件: #若条件成立,则执行此处代码 逻辑代码 elif 判断条件: 逻辑代码 else: #上述条件都不符合,则执行此处代码 逻辑代码
#判断两数大小x=10y=20if x>y: print(x)else: print(y)#20
缩进快捷键,tab向右移动四个空格,shift+tab向左移动四个空格
while循环
语法: while 条件判断: # 成立执行此处 逻辑代码 break #跳出本次循环 continue #结束本次循环,进入下一次循环
#限制循环次数str1='tank'#初始值num=0while num<3: name= input('请输入猜测的字符:').strip() if name =='tank': print('tank success') break print('请重新输入') num+=1
五 文件处理 open() 写文件 wt:写文本 读文件 rt:写文本 追加写文件 at:追加文本 注意:必须指定字符编码,以什么字符编码写,就一什么字符编码打开,如utf-8
执行python代码文件的过程 1先启动python解释器,加载到内存中 2把写好的python文件加载到解释器中 3检测python语法,执行代码
打开文件会产生两种资源: 1.python程序 2.操作系统打开文件
打开,读写,关闭文件方式一:
#参数一:文件的绝对路径#参数二:mode 操作文件的模式#参数三:encoding 指定的字符编码f=open('file.txt',mode='wt',encoding='utf-8')f.write('tank')f.close()#关闭操作系统文件资源f=open('file.txt',mode='rt',encoding='utf-8')f.read()f.close()#关闭操作系统文件资源f=open('file.txt',mode='a',encoding='utf-8')f.write('\n 合肥学院')f.close()#关闭操作系统文件资源
打开,读写,关闭文件方式二:(推荐)
# with可以管理open打开的文件# 会在with执行完毕后自动调用close()关闭文件# with open()'''文件处理之上下文管理with open() as f"句柄"'''with open('file.txt','w',encoding='utf-8') as f: f.write('墨菲定律')with open('file.txt', 'r', encoding='utf-8') as f: res = f.read() print(res)with open('file.txt', 'a', encoding='utf-8') as f: f.write('围城')
对图片、音频、视频读写
rb模式读取二进制,不需要指定字符编码#读取cxk.jpgwith open('cxk,jpg','rb') as f:res=f.read()print(res)jpg=res#把cxk.jpg的二进制流写入cxk_copy.jpg文件中with open('cxk_copy.jpg','wb') as f_w:f_w.write(jpg)
#with管理多个文件#通过with来管理open打开的两个文件句柄f_r,f_w with open('cxk,jpg','rb') as f_r,open('cxk.jpg','wb') as f_w: #通过f_r句柄把图片的二进制流读取出来 res=f_r.read() #通过f_w句柄把图片的二进制流写入cxk_copy.jpg文件中 f_w.write(res)
六 函数
什么是函数?
函数指的其实是一把工具
使用函数的好处:
1解决代码冗余问题
2.是代码的结构更清晰
3.易管理
函数的使用必须遵循:先定义,后调用
函数定义语法:
def 函数名(参数1,参数2,...):
注释:声明函数
逻辑代码
return 返回值
def:defind 定义。
函数名:必须看其名知其意
():接收外部传入的参数 注释:用来声明函数的作用
return:返回给调用者的值
定义函数的三种形式:
1无参函数 不需要接收外部传入的参数
2有参函数 血压哟接收外部传入的参数
3空函数 pass
1.无参函数
#userame,password用来接收外部传入的值
def login(): user=input('请输入用户名').strip() pwd=input('请输入密码').strip() if user== 'tank' and pwd == '123': print('login successful') else: print('login error') #函数的内存地址#print(login) #函数调用login()
2.无参函数
def login(username,password): user=input('请输入用户名').strip() pwd=input('请输入密码').strip() if user== username and pwd == password: print('login successful') else: print('login error') #函数的内存地址#print(login) #函数调用login('tank','123')
ATM:
1.登陆
2.注册
3.提现
4.取款
5.转账
6.还款 '''
#登陆功能
def login():
#代表什么都不做
pass
#注册功能
def register():
#代表什么都不做
pass
#还款功能
def repay():
pass
函数的参数
在定义阶段,x,y称之为形参。
def func(x,y):
x,y print(x,y)
#在调用阶段:10,100称之为实参
func(10,100)
''' 函数的参数 '''
#在定义阶段:x,y称之为形参 def fnnc(x,y): print(x,y)
# 在调用阶段:10,100称之为实参 func(10, 100)
位置参数
位置形参
位置实参
必须按照位置一一传参 '''
在定义阶段:
位置形参
def fnnc(x,y): print(x,y)
# 在调用阶段:10,100称之为位置实参
func(10, 100)
关键字参数
关键字实参
按照关键字传参
def fnnc(x, y): print(x, y)
# 在调用阶段:10,100称之为关键字参数
func(10, 100)
#不能少传
# func(y=111) 报错
#不能多传
# func(y=111,x=24,z=36) 报错
默认参数
在定义阶段,为参数设置默认值
def foo(x=100,y=111):
print(x,y)#不传参,则使用默认参数 foo()#传参,使用传入的参数 foo(200,300) ''' 函数的嵌套定义
函数对象:
函数的内存地址称之为函数对象
函数的名称空间:
内置:python解析器自带的都称之为“内置名称空间”
全局: 所有顶着头写的变量,函数...都称之为“全名称空间”
局部: 在函数内部定义的,都称之为“局部名称空间”
名称空间加载顺序:
内置====>全局====>局部
名称空间查找顺序:
局部=====>全局====>内置
#函数的嵌套定义
def func1():
print('from func1...')
def func2():
print('from func2...')
#函数对象
print(func1)def f1(): pass def f2(): passdict1={ '1':f1,'2':f2}choice=input('请选择功能编号')if choice=='1': print(dict1[choice]) dict1[choice]()elif choice=='2' print(dict1[choice]) dict1[choice] ()
x =10#名称空间#函数的嵌套定义def func1(): #x=20 print('from func1...') print(x) def func2(): print('from func2...')func1()
#名称空间#函数的嵌套定义def func1(): #x=20 print('from func1...') print(x) #报错(代码是自上而下,print(x)无法引用x=30,所以报错) x=30 def func2(): print('from func2...')func1()