今日内容:
1.常用数据类型及内置方法
2.文件处理
3.函数
一 数据类型:
列表类型:
定义:
在[]内,可以存放多个任意类型的值,并以逗号隔开。
一般用于存放学生的爱好,课堂的周期等等...
1 ''' 2 列表: 3 定义:在[]内可以存放多个任意类型的值。 4 并以逗号隔开。 5 一般用于存放学生的爱好,课堂的周期等等... 6 ''' 7 students = ['钱柜', '李小龙', '艾瑞莉娅'] 8 # list(['钱柜', '李小龙', '艾瑞莉娅']) 9 print(students[1]) # 李小龙 10 students_info = ['A', 18, '男', ['AA', 'BB']] 11 # 取A同学的所有爱好 12 print(students_info[3]) 13 # 取A同学的第二个爱好 14 print(students_info[3][1])
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
2、切片(顾头不顾尾,步长)
3、长度
4、成员运算in和not in
5、追加
6、删除
7、循环
1 # 优先掌握的操作: 2 # 1、按索引存取值(正向存取+反向存取):即可存也可取 3 print(students_info[3]) 4 print(students_info[-3]) 5 # 2、切片(顾头不顾尾,步长) 6 print(students_info[0:4:2]) 7 # 3、长度 8 print(students_info.__len__()) 9 print(len(students_info)) 10 # 4、成员运算 11 print('A' in students_info) 12 # 5、追加 13 students_info.append('hfuu') 14 # 6、删除 15 del students_info[3] # 删除索引是3的值 16 # 7、循环 17 for line in students_info: 18 print(line)
需要掌握的:
1、index
2、count
3、pop
4、remove
5、insert
6、extend
1 # 1.index 获取列表中某个值的索引 2 print(students_info.index('hfuu')) # 3 3 4 # 2.count 获取列表中某个值的数量 5 print(students_info.count('A')) # 1 6 7 # 3.取值,默认取列表中最后一个值,类似删除 8 # 若pop()括号中写了索引,则取索引对应的值 9 students_info.pop() 10 print(students_info) 11 12 students_info.append('ada') 13 print(students_info) 14 students_info.pop() 15 print(students_info) 16 17 # 4.移除,把列表中的某个值的第一个值移除 18 sex = students_info.remove('男') # 单纯删除,并非取出 19 print(sex) # none 20 print(students_info) # 删除‘男’之后剩下的列表 21 22 # 5.插入值 23 students_info.insert(2, 'hfuu') 24 print(students_info) # ['A', 18, 'hfuu'] 25 26 # 把student_info插入student_info2中 27 students_info2 = ['c', 18, 'hfuu'] 28 students_info2.insert(2,students_info) 29 print(students_info) 30 print(students_info2) 31 32 # 6.合并列表 33 students_info1 = ['c', 77, 'hfuu'] 34 students_info1.extend(students_info2) 35 print(students_info1) # ['c', 77, 'hfuu', 'c', 18, ['A', 18, 'hfuu'], 'hfuu']
元组类型:
定义:
在()内,可以存放多个任意类型的值,并以逗号隔开。
# 元组 # 定义 # tuple((1, 2, 3, '四', '五')) tuple1 = (1, 2, 3, '四', '五') print(tuple1) # (1, 2, 3, '四', '五')
注意:
元组与列表不一样的是,只能在定义时初始化值,不能对其进行修改。
优点:
在内存中占用的资源比列表要小。
元组的一些常用操作:
1 # 1、按索引存取值(正向存取+反向存取):即可存也可取 2 print(tuple1[2]) 3 print(tuple1[-1]) 4 # 2、切片(顾头不顾尾,步长) 5 print(tuple1[0:5:2]) 6 # 3、长度 7 print(len(tuple1)) 8 # 4、成员运算 9 print(1 in tuple1) 10 # 5、循环 11 for line in tuple1: 12 # print默认参数是\n 13 print(line,end='@')
字典类型:
作用:
在{}内,可存放多个值,以key-value存取,取值速度快。
定义:
key必须是不可变类型,value可以是任意类型
可变类型与不可变类型的区别举例:
1 '''''' 2 ''' 3 不可变类型: 4 变量的值修改后,内存地址一定不一样。 5 数字类型 6 int 7 float 8 9 字符串类型 10 # str 11 # 12 # 元组类型 13 # tuple 14 # 15 # 可变类型: 16 # 列表类型 17 # list 18 # 19 # 字典类型 20 # dict 21 # 22 # ''' 23 # # 不可变类型 24 # # int 25 # number = 100 26 # print(id(number)) # 1434810944 27 # number = 111 28 # print(id(number)) # 1434811296 29 # 30 # # float 31 # sal = 1.0 32 # print(id(sal)) # 2771339842064 33 # sal = 2.0 34 # print(id(sal)) # 2771339841896 35 # 36 # str1 = 'hello python!' 37 # print(id(str1)) # 1975751484528 38 # str2 = str1.replace('hello', 'like') 39 # print(id(str2)) # 1975751484400 40 41 42 # 可变类型: 43 # 列表 44 45 list1 = [1, 2, 3] 46 47 list2 = list1 48 list1.append(4) 49 50 # list1与list2指向的是同一份内存地址 51 print(id(list1)) 52 print(id(list2)) 53 print(list1) 54 print(list2)
字典的常用操作:
1 # 字典 2 dict1 = {'age': 18, 'name' : 'cjw'} 3 print(dict1) # {'age': 18, 'name': 'cjw'} 4 print(type(dict1)) # dict 5 # 取值,字典名+[],括号内写值对应的key 6 print(dict1['age']) # 18 7 8 # 优先掌握的操作 9 # 1、按key存取值,可存可取 10 dict1['level'] = 9 11 print(dict1) 12 print(dict1['name']) 13 14 # 2、长度len 15 print(len(dict1)) 16 17 # 3、成员运算in和not in 只判断字典中的key 18 print('name' in dict1) # True 19 print('cjw' in dict1) # Flase 20 21 # 4、删除 22 del dict1['level'] 23 print(dict1) 24 25 # 5、得到字典中所有的key 26 print(dict1.values()) 27 print(dict1.items()) 28 29 # 6、循环 30 # 循环遍历字典中的所有key 31 for key in dict1: 32 print(key) 33 print(dict1[key]) 34 35 # get 36 print(dict1.get('age')) 37 38 # []取值 39 # print(dict1['sex']) # KeyError: 'sex’ 40 41 # get取值 42 print(dict1.get('age')) # none 43 44 # 若找不到,为其设置一个默认值 45 print(dict1.get('sex','male')) # male
二 流程控制:
if 判断:
语法:
if 判断条件:
# 若条件成立,则执行此处代码
逻辑代码
elif 判断条件:
# 若条件成立,则执行此处代码
逻辑代码
else:
# 若以上判断都不成立,则执行此处代码
逻辑代码
1 # 判断两数大小 2 x = 10 3 y = 20 4 z = 30 5 6 # 缩进快捷键,tab往右移动四个空格,shift + tab 往左移动四个空格 7 if x > y: 8 print(x) 9 10 elif z > y: 11 print(z) 12 13 else: 14 print(y)
while循环
语法:
while 条件判断:
# 成立执行此处
逻辑代码
break # 跳出本层循环
continue # 结束本次循环,进入下一次循环
1 str1 = 'tank' 2 3 # while循环 4 while True: 5 name = input('请输入猜测的字符: ').strip() 6 if name == 'tank': 7 print('tank success!') 8 break 9 10 print('请重新输入! ') 11 12 13 # 限制循环次数 14 str1 = 'tank' 15 # 初始值 16 num = 0 # 0 1 2 3 17 18 # while循环 19 while num < 3: 20 name = input('请输入猜测的字符: ').strip() 21 if name == 'tank': 22 print('tank success!') 23 break 24 25 print('请重新输入!') 26 num += 1
三 文件处理:
open()
写文件
wt: 写文本
读文件
rt: 读文本
追加写文件
at: 追加文本
注意: 必须指定字符编码,以什么方式写
就得以什么方式打开。 如: utf-8
执行python文件的过程:
1.先启动python解释器,加载到内存中。
2.把写好的python文件加载到解释器中。
3.检测python语法,执行代码。
SyntaxError: 语法错误!
打开文件会产生两种资源:
1.python程序
2.操作系统打开文件
1 #写文本文件 2 #参数一: 文件的绝对路径 3 #参数二: mode 操作文件的模式 4 #参数三: encoding 指定的字符编码 5 #f = open('file.txt', mode='wt', encoding='utf-8') 6 f.write('tank') 7 f.close() # 关闭操作系统文件资源 8 9 10 #读文本文件 r == rt 11 f = open('file.txt', 'r', encoding='utf-8') 12 print(f.read()) 13 f.close() 14 15 16 # 追加写文本文件 17 a = open('file.txt', 'a', encoding='utf-8') 18 a.write('\n 合肥学院') 19 a.close()
文件处理之上下文管理:
1、with可以管理open打开的文件,
会在with执行完毕后自动调用close()关闭文件
with open()
2、with可以管理多个文件
1 ''' 2 文件处理之 上下文管理. 3 with open() as f "句柄" 4 ''' 5 #写 6 with open('file1.txt', 'w', encoding='utf-8') as f: 7 f.write('墨菲定律') 8 9 # 读 10 with open('file1.txt', 'r', encoding='utf-8') as f: 11 res = f.read() 12 print(res) 13 14 # 追加 15 with open('file1.txt', 'a', encoding='utf-8') as f: 16 f.write('围城') 17 # f.close() 18 19 20 21 ''' 22 对图片、音频、视频读写 23 rb模式,读取二进制,不需要指定字符编码 24 ''' 25 26 # 读取相片cxk.jpg 27 with open('cxk.jpg', 'rb') as f: 28 res = f.read() 29 print(res) 30 31 jpg = res 32 33 # 把cxk.jpg的二进制流写入cxk_copy.jpg文件中 34 with open('cxk_copy1.jpg', 'wb') as f_w: 35 f_w.write(jpg) 36 37 38 ''' 39 with 管理多个文件 40 ''' 41 # 通过with来管理open打开的两个文件句柄f_r,f_w 42 with open('cxk.jpg', 'rb') as f_r, open('cxk_copy2.jpg', 'wb') as f_w: 43 # 通过f_r句柄把图片的二进制流读取出来 44 res = f_r.read() 45 # 通过f_w句柄把图片的二进制流写入cxk_copy.jpg文件中 46 f_w.write(res)
四 函数
什么是函数?
函数指的其实一把工具。
使用函数的好处:
1.解决代码冗余问题。
2.使代码的结构更清晰。
3.易管理。
函数的使用必须遵循: 先定义,后调用。
函数定义语法:
def 函数名(参数1, 参数2...):
'''注释: 声明函数'''
逻辑代码
return 返回值
def: defind 定义。
函数名: 必须看其名知其意。
(): 接收外部传入的参数。
注释: 用来声明函数的作用。
return: 返回给调用者的值。
1 ''' 2 定义函数的三种形式: 3 1.无参函数 4 不需要接收外部传入的参数。 5 6 2.有参函数 7 需要接收外部传入的参数。 8 9 3.空函数 10 11 pass 12 13 14 函数调用: 15 函数名 + () 调用 16 17 ''' 18 19 # 1.无参函数 20 def login(): 21 user = input('请输入用户名').strip() 22 pwd = input('请输入密码').strip() 23 24 if user == 'tank' and pwd == '123': 25 print('login successful!') 26 27 else: 28 print('login error!') 29 30 31 # 函数的内存地址 32 print(login) 33 34 35 # 函数调用 36 login() 37 38 39 2.有参函数 40 username,password 用来接收外部传入的值 41 def login(username, password): 42 user = input('请输入用户名').strip() 43 pwd = input('请输入密码').strip() 44 45 if user == username and pwd == password: 46 print('login successful!') 47 48 else: 49 print('login error!') 50 51 52 # 函数调用 53 # 若函数在定义时需要接收参数,调用者必须为其穿传参 54 login('tank', '123') 55 56 57 # 3.空函数 58 ''' 59 ATM: 60 1.登录 61 2.注册 62 3.提现 63 4.取款 64 5.转账 65 6.还款 66 ''' 67 68 69 # 登录功能 70 def login(): 71 # 代表什么都不做 72 pass 73 74 75 # 注册功能 76 def register(): 77 # 代表什么都不做 78 pass 79 80 81 # 还款功能 82 def repay(): 83 pass 84 85 ... 86 87 88 ''' 89 函数的参数: 90 ''' 91 #在定义阶段: x, y称之为形参。 92 def func(x, y): # x, y 93 print(x, y) 94 95 # 在调用阶段: 10, 100 称之为实参。 96 func(10, 100) 97 98 99 ''' 100 位置参数: 101 位置形参 102 位置实参 103 必须按照位置一一传参。 104 ''' 105 # 在定义阶段: 位置形参 106 def func(x, y): # x, y 107 print(x, y) 108 # 109 # # 在调用阶段: 10, 100 称位置实参。 110 func(10, 100) # 10 100 111 112 ''' 113 关键字参数: 114 关键字实参 115 按照关键字传参。 116 ''' 117 # 位置形参x, y 118 def func(x, y): 119 print(x, y) 120 121 # 在调用阶段: x=10, y=100称之为关键字参数。 122 func(y=111, x=10) # 10 111 123 124 不能少传 125 func(y=111) # 报错TypeError 126 127 128 不能多传 129 func(y=111, x=222, z='333') # 报错TypeError 130 131 132 ''' 133 默认参数: 134 在定义阶段,为参数设置默认值 135 ''' 136 137 def foo(x=10, y=20): 138 print(x, y) 139 140 # 不传参,则使用默认参数 141 foo() 142 143 # 传参,使用传入的参数 144 foo(200, 300)
1 '''''' 2 ''' 3 函数的嵌套定义: 4 在函数内部定义函数。 5 6 函数对象: 7 函数的内存地址称之为函数对象。 8 9 函数的名称空间: 10 内置: 11 python解析器自带的都称之为"内置名称空间"。 12 13 全局: 14 所有顶着头写的变量、函数...都称之为"全名称空间"。 15 16 局部: 17 在函数内部定义的,都称之为"局部名称空间"。 18 19 名称空间加载顺序: 20 内置 ---> 全局 ---> 局部 21 22 名称空间查找顺序: 23 局部 ---> 全局 ---> 内置 24 ''' 25 26 27 # 函数的嵌套定义 28 def func1(): 29 print('from func1...') 30 31 def func2(): 32 print('from func2...') 33 34 35 # 函数对象 36 print(func1) 37 38 39 def f1(): 40 pass 41 42 43 def f2(): 44 pass 45 46 47 dic1 = {'1': f1, '2': f2} 48 49 choice = input('请选择功能编号: ') 50 if choice == '1': 51 print(dic1[choice]) 52 dic1[choice]() 53 54 elif choice == '2': 55 print(dic1[choice]) 56 dic1[choice]() 57 58 x = 10 59 60 61 # 名称空间 62 # 函数的嵌套定义 63 def func1(): 64 # x = 20 65 66 print('from func1...') 67 68 print(x) # 报错 69 70 x = 30 71 72 def func2(): 73 print('from func2...') 74 75 76 func1()
浙公网安备 33010602011771号