python学习 第二天 python基础
一 列表
定义:在[ ]内,可以存放多个任意类型的值,并以逗号隔开。
一般用于存放学生的爱好,课堂的周期等等。
定义一个学生列表,可存放多个学生
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) #True print('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) #19 student_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
2切片(顾头不顾尾)
print(tuplel[0:5:2]) #[1,3,'liu']
3长度
print(len(tuplel)) #5
4成员运算in和not in
print(1 in tuplel) #True print(1 not in tuplel) #False
5循环
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) #True print('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=10 y=20 if x>y: print(x) else: print(y) #20
缩进快捷键,tab向右移动四个空格,shift+tab向左移动四个空格
while循环
语法:
while 条件判断:
# 成立执行此处
逻辑代码
break #跳出本次循环
continue #结束本次循环,进入下一次循环
#限制循环次数 str1='tank' #初始值 num=0 while 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.jpg with 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(): pass dict1={'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()