python实习
一、随堂笔记:
1.数据类型剩余的内置方法
2.字符编码
3.文件处理
4.函数基础
list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
'''
insert()插入
list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
list1.insert(3,"dudu")
print(list1)
pop()取出
remove()移除
count()查看值的个数
print(list1.count("zhozho"))
index()查看值的索引
print(list1.index("广州"),"广州")
clear()清空列表的值
copy()拷贝
#copy()与=的区别
'''
"="号是直接把相应的内存赋给变量,故改变内存中值的时候,变量的值跟者改变
copy()是将之前内存地址拷贝到另一个内存地址之中,前一个地址值改变时,copy()变量值不变
称之为浅拷贝
浅拷贝:list1的列表中的外层值改变值对其不影响,但其中
的可变类型改变时,会随之改变
复制代码
list2=list1.copy();
list3=list1
print(list2)
print(list3)
list1.append("增加")
print(list2)
print(list3)
复制代码
编译:
复制代码
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']
复制代码
'''深拷贝
把list1中的所有值完全拷贝到另一个地址,list1中改变任何值都不改变
'''
复制代码
from copy import deepcopy
list4=deepcopy(list1)
list1[8].append("ho")
print(list1)
print(list2)
print(list3)
print(list4)
复制代码
编译:
复制代码
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']
复制代码
extend()合并
reverse()反转
sort()排序
'''
字典:
#按照key取存值
dict1={"name":"alice","age":18,"sex":"男","school":"安徽工程大学"}
print(dict1["school"])
>>>安徽工程大学
#get()
若key在字对应的字典中则取value值,不在则为none,不会报错
若不存在的key值后面定义了value值,则会自动取自定义的value值
print(dict1.get("school"))
print(dict1.get("ji","ko"))
print(dict1.get ("ji"))
安徽工程大学
ko
None
# 2.len()
print(len(dict1))
#3.成员运算,判断的是字典里的key
#in \not in
#4.删除 del
# del dict1["name"]
#5.pop()
name=dict1.pop("name")
print(name)
print(dict1)
alice
{'age': 18, 'sex': '男', 'school': '安徽工程大学'}
字典是无序类型,不根据索引取值
排序是无序的
Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
如果字典已经为空,却调用了此方法,就报出KeyError异常。
dict1.popitem()
print(dict1)
#6.keys value items(键值对)
print(dict1.keys())
print(dict1.values())
print(dict1.items())
dict_keys(['age', 'sex'])
dict_values([18, '男'])
dict_items([('age', 18), ('sex', '男')])
#7.循环
#循环字典中索引的key
for key in dict1:
print(key)
#8 update()更新
dict2={"work":"student"}
dict1.update(dict2)
print(dict1)
{'age': 18, 'sex': '男', 'work': 'student'}
元组:#在小括号内,以逗号隔开,存放多个值
#优先掌握,元组为不可变类型(列表为可变类型)
tuple1=(1,2,3,4,5,6)
print(tuple1)
#按索引取值
print(tuple1[1])
#切片取值,步长
print(tuple1[0:6])
#成员运算
#循环
集合:
#集合类型
#在{}内以逗号隔开,可存放多个值,但集合客默认去重功能
集合也是无序的
set1={1,2,3,5,3,2,4,7}
print(set1)
{1, 2, 3, 4, 5, 7}
{}:
set2=set()
set3={}#这里无法判断是元组还是字典
print(set2,set3)
set3["name"]="tank"
print(type(set3))
set2=set()
set3={}#这里无法判断是元组还是字典
print(set2,set3)
set3["name"]="tank"
print(type(set3))
set() {}
<class 'dict'>
#文件处理的基本使用
#open("文件的名字",mode="wt",encoding=“utf_8”)mode 为对文本操作的模式,encoding为指定的字符编码
'''
打开i文件会产生两种资源,一种是python解释器与python文件的资源,结束程序python会自动回收
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件的名字.txt',mode='wt',encoding='utf-8')
f.write("hello tank!!")
f.close()
读文件
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件的名字.txt',mode='r',encoding='utf-8')
res=f.read()
print(res)
文件的追加模式a打开一个文件用于追加。追加文件需要加上\n
# 如果该文件已存在,文件指针将会放在文件的结尾。
# 也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件.txt','a',encoding='utf-8')
f.write('\nhello,join!')
f.close()
文件处
1.数据类型剩余的内置方法
2.字符编码
3.文件处理
4.函数基础
list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
'''
insert()插入
list1=["zhozho",18,"male",3.0,9,"广州","zhozho",["tank","ko"]]
list1.insert(3,"dudu")
print(list1)
pop()取出
remove()移除
count()查看值的个数
print(list1.count("zhozho"))
index()查看值的索引
print(list1.index("广州"),"广州")
clear()清空列表的值
copy()拷贝
#copy()与=的区别
'''
"="号是直接把相应的内存赋给变量,故改变内存中值的时候,变量的值跟者改变
copy()是将之前内存地址拷贝到另一个内存地址之中,前一个地址值改变时,copy()变量值不变
称之为浅拷贝
浅拷贝:list1的列表中的外层值改变值对其不影响,但其中
的可变类型改变时,会随之改变
复制代码
list2=list1.copy();
list3=list1
print(list2)
print(list3)
list1.append("增加")
print(list2)
print(list3)
复制代码
编译:
复制代码
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']
复制代码
'''深拷贝
把list1中的所有值完全拷贝到另一个地址,list1中改变任何值都不改变
'''
复制代码
from copy import deepcopy
list4=deepcopy(list1)
list1[8].append("ho")
print(list1)
print(list2)
print(list3)
print(list4)
复制代码
编译:
复制代码
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho']]
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko', 'ho'], '增加']
['zhozho', 18, 'male', 'dudu', 3.0, 9, '广州', 'zhozho', ['tank', 'ko'], '增加']
复制代码
extend()合并
reverse()反转
sort()排序
'''
字典:
#按照key取存值
dict1={"name":"alice","age":18,"sex":"男","school":"安徽工程大学"}
print(dict1["school"])
>>>安徽工程大学
#get()
若key在字对应的字典中则取value值,不在则为none,不会报错
若不存在的key值后面定义了value值,则会自动取自定义的value值
print(dict1.get("school"))
print(dict1.get("ji","ko"))
print(dict1.get ("ji"))
安徽工程大学
ko
None
# 2.len()
print(len(dict1))
#3.成员运算,判断的是字典里的key
#in \not in
#4.删除 del
# del dict1["name"]
#5.pop()
name=dict1.pop("name")
print(name)
print(dict1)
alice
{'age': 18, 'sex': '男', 'school': '安徽工程大学'}
字典是无序类型,不根据索引取值
排序是无序的
Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
如果字典已经为空,却调用了此方法,就报出KeyError异常。
dict1.popitem()
print(dict1)
#6.keys value items(键值对)
print(dict1.keys())
print(dict1.values())
print(dict1.items())
dict_keys(['age', 'sex'])
dict_values([18, '男'])
dict_items([('age', 18), ('sex', '男')])
#7.循环
#循环字典中索引的key
for key in dict1:
print(key)
#8 update()更新
dict2={"work":"student"}
dict1.update(dict2)
print(dict1)
{'age': 18, 'sex': '男', 'work': 'student'}
元组:#在小括号内,以逗号隔开,存放多个值
#优先掌握,元组为不可变类型(列表为可变类型)
tuple1=(1,2,3,4,5,6)
print(tuple1)
#按索引取值
print(tuple1[1])
#切片取值,步长
print(tuple1[0:6])
#成员运算
#循环
集合:
#集合类型
#在{}内以逗号隔开,可存放多个值,但集合客默认去重功能
集合也是无序的
set1={1,2,3,5,3,2,4,7}
print(set1)
{1, 2, 3, 4, 5, 7}
{}:
set2=set()
set3={}#这里无法判断是元组还是字典
print(set2,set3)
set3["name"]="tank"
print(type(set3))
set2=set()
set3={}#这里无法判断是元组还是字典
print(set2,set3)
set3["name"]="tank"
print(type(set3))
set() {}
<class 'dict'>
#文件处理的基本使用
#open("文件的名字",mode="wt",encoding=“utf_8”)mode 为对文本操作的模式,encoding为指定的字符编码
'''
打开i文件会产生两种资源,一种是python解释器与python文件的资源,结束程序python会自动回收
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件的名字.txt',mode='wt',encoding='utf-8')
f.write("hello tank!!")
f.close()
读文件
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件的名字.txt',mode='r',encoding='utf-8')
res=f.read()
print(res)
文件的追加模式a打开一个文件用于追加。追加文件需要加上\n
# 如果该文件已存在,文件指针将会放在文件的结尾。
# 也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
f=open(r'E:\新建文件夹\收纳\python_project\day_02\文件.txt','a',encoding='utf-8')
f.write('\nhello,join!')
f.close()
文件处
理之上下文管理:with as
with会自带close功能
会在文件处理完成后自动调用close()
with open('E:\新建文件夹\收纳\python_project\day_02\文件.txt','w',encoding='utf-8') as f:
f.write('huiihggfghh')
图片和视频的处理
获取网页图片的地址,这里为图片的URL,后缀为.jpg
#content返回的是bytes,二级制型的数据。图片、视频等都是二进制的数据
import requests
res =requests.get('
http://pic53.nipic.com/file/20141115/9448607_175255450000_2.jpg
')
写入图片
with open('da.jpg','wb') as f:
f.write(res.content)
读图片
with open('da.jpg','rb') as f:
res=f.read()
print(res)
图片拷贝
with open('da.jpg','rb') as f,open('ta.jpg','rb') as w:
res=f.read()
w.write(res)
#读写视频操作与读写图片基本一致,视频后缀为.mp4
函数相关
1.什么是函数
函数相当于工具,需要实现准备好,在需要时再使用
2.如何使用函数
函数必须先定义,后调用
3.函数的语法:
def cup(参数一,参数二):
函数的声明
函数体代码(逻辑代码)
def:(全称defind)用来声明定义函数的关键字
函数名:看其名,知其意
():存放的是接收外界的参数
注释:用来说明函数的作用
函数体代码:逻辑代码
return:后面跟函数的返回值
'''
#注册功能函数
复制代码
def register():
while True:
user=input("请输入用户名:").strip()
pwd=input("请输入密码").strip()
re_pwd=input("请再次输入密码:").strip()
if pwd==re_pwd:
# user_info="用户名:%s,密码:%s"%(user,pwd)
# user_info="用户名:{},密码:{}".format(user,pwd)三种方法使用户名与密码匹配
user_info=f'用户名:{user},密码:{pwd}'
with open("user.txt",'w',encoding='utf-8')as f:
f.write(user_info)
else:
print("两次密码不一样,请重新输入!")
return
复制代码
#调用函数 函数名()
register()
'''
函数在定义阶段发生的事情
1.先打开python解释器
2.加载python文件(.py文件)
3.只会检测python语法,不会执行函数体代码
'''
with会自带close功能
会在文件处理完成后自动调用close()
with open('E:\新建文件夹\收纳\python_project\day_02\文件.txt','w',encoding='utf-8') as f:
f.write('huiihggfghh')
图片和视频的处理
获取网页图片的地址,这里为图片的URL,后缀为.jpg
#content返回的是bytes,二级制型的数据。图片、视频等都是二进制的数据
import requests
res =requests.get('
')
写入图片
with open('da.jpg','wb') as f:
f.write(res.content)
读图片
with open('da.jpg','rb') as f:
res=f.read()
print(res)
图片拷贝
with open('da.jpg','rb') as f,open('ta.jpg','rb') as w:
res=f.read()
w.write(res)
#读写视频操作与读写图片基本一致,视频后缀为.mp4
函数相关
1.什么是函数
函数相当于工具,需要实现准备好,在需要时再使用
2.如何使用函数
函数必须先定义,后调用
3.函数的语法:
def cup(参数一,参数二):
函数的声明
函数体代码(逻辑代码)
def:(全称defind)用来声明定义函数的关键字
函数名:看其名,知其意
():存放的是接收外界的参数
注释:用来说明函数的作用
函数体代码:逻辑代码
return:后面跟函数的返回值
'''
#注册功能函数
复制代码
def register():
while True:
user=input("请输入用户名:").strip()
pwd=input("请输入密码").strip()
re_pwd=input("请再次输入密码:").strip()
if pwd==re_pwd:
# user_info="用户名:%s,密码:%s"%(user,pwd)
# user_info="用户名:{},密码:{}".format(user,pwd)三种方法使用户名与密码匹配
user_info=f'用户名:{user},密码:{pwd}'
with open("user.txt",'w',encoding='utf-8')as f:
f.write(user_info)
else:
print("两次密码不一样,请重新输入!")
return
复制代码
#调用函数 函数名()
register()
'''
函数在定义阶段发生的事情
1.先打开python解释器
2.加载python文件(.py文件)
3.只会检测python语法,不会执行函数体代码
'''
二:作业:
1 day作业 2 with open(r'file1.text','w',encoding='utf-8') as f: 3 f.write('用户名:xm,密码:108595.\n用户名:xm1998,密码:111008.') 4 5 def login(): 6 user = '' 7 pwd = '' 8 dict1 = {} 9 with open('file1.text','rt',encoding='utf-8')as w: 10 for line in w: 11 line = line.split('\n')[0].split(',') 12 for data in line: 13 if '用户名'in data: 14 user = data[4:] 15 else: 16 pwd = data[3:] 17 dict1[user] = pwd 18 while True: 19 user1 = input('请输入用户名:').strip() 20 21 if user1 in dict1 : 22 i = 1 23 while i <= 3: 24 pwd1 = input('请输入密码:').strip() 25 if pwd1 == dict1[user1]: 26 print('登陆成功!') 27 break 28 else: 29 i = i + 1 30 else: 31 print('密码错误超过三次!') 32 else: 33 print('用户不存在!') 34 break 35 36 login() 运行结果 请输入用户名:xm1998 请输入密码:111008 请输入密码:111111 请输入密码:111260 密码错误超过三次!