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()
文件处 理之上下文管理: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('python实习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语法,不会执行函数体代码
'''   二:作业:
 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
密码错误超过三次!

  


上一篇:day02 python基础


下一篇:Learn python the second day.