2019.6.12

一、数据类型剩余的内置方法

#列表类型
#1.insert() #插入
list1=[‘tank’,18,’male’,3.0,9,’广东]
list1.insert(2,’oldboy’)
print(list1)

#2.pop() #取出
#3.remove() #移除

#4.count()  #查看值得个数
print(list1.count(‘tank’))

#5.index() #查看值得索引
list1.clear()
print(list1)

#6.clear() #清空列表的值
list1.clear()
print(list1)

#7.copy() #浅拷贝 只拷贝当前的;但如果直接赋值,值会随着原来的变动而变动。
#将list1的内存地址浅拷贝复制给list2
list2=list1.copy()
print(list2, ’添加值前’)
#将list1的原地址直接赋值给list3
list3=list1
print(list3, ’添加值前’)

#deepcopy #深拷贝  Copy完全拷贝(深拷贝)
from copy import deepcopy

#将list1的值深拷贝赋值给4
list4=deepcopy(list1)

#追加jason到1中
list1.append(‘jason’)

print(list2, ’添加值后’)
print(list3, ’添加值后’)

#给list1中的可变列表进行逐价值
list1[8].append(‘tank’)

#打印直接赋值,深浅拷贝的结果
#浅拷贝:list1的列表中外层值改变对其不影响
#但对list1中的可变类型进行修改则会随之改变值
print(list2)
print(list3)

#深拷贝:把list1中的所有值完全拷贝到一个新地址中
#进而与list1完全隔开
print(list4)

#8.extend() #合并
List1=[1,2,3]
List2=[4,5,6]
List1.extend(list2)
print(list1)

#9.reverse() #反转
list1.reverse()
print(list1)

#10.sort()  #排序
list3=[1,3,5,8,10,2,4,6]
#升序
list3.sort()
print(list3)

#降序
list3.sort(reverse=True)
print(list3)

#tab:往右空四个空格
#shift+tab:往左空四个空格



#字典的内置方法(字典是无序的)
#1、按照Key取/存值
dict1={‘name’:’张琦’,’age’:18,’sex’:’male’,’school’:’安徽工程大学’}

#根据key取张琦的学校
print(dict1[‘school’])
print(dict1[‘sal’])  #查看薪资会报错

#get()
print(dict1.get(‘school’))
print(dict1.get(‘sal’))  #会显示None
#第一个参数是key
#第二个参数是默认值,若果key存在对应值则取对应值,否则取默认值
print(dict1.get(‘school’,’华南理工大学’))
print(dict1.get(‘sal’,’15000’))

#2、len
print(len(dicr1))   #4

#3、成员运算in和not in
print(‘name’in dict1)  #True
print(‘sal’in dict1)   #Flase
print(‘sal’[ not in dict1]  #True

4、删除
del dict1[“name”]
print(dict1)

#pop()
#根据字典中的key取出对应值赋值给变量name
name=dict.pop(‘name’)
print(dict1)
print(name)

#随即取出字典中某个值
dict1.popitem()
print(dict1)

#5、keys\values\items
print(dict1.keys())
print(dict1.values())
print(dict.items())

#6、循环
#循环字典中所有的key
for key in dict1:
   print(key)

#7、update()
print(dict1)
dict2={“work”:”student”}
#把dict2加到dict1中
dict1.update(dict2)
print(dict1)
#元组类型(在小括号内,以逗号隔开存放多个值)
#注意:元足浴列表的区别,元组是不可变类型,列表是可变类型

tuple1=(1,2,3)
print(tuple1)
#优先掌握
#1、按索引取值
print(tuple1[2])

#2、切片(顾头不顾尾)
print(tuole1[0:6])  #(1,2,3,4,5,6)

#步长
print(tuple1[0:6:2])   #(1,3,5)

#3、长度
print(len(tuple1))   #6

#4、成员运算in和not in
print(1 in tuple1)  #True
print(1 not in tuple1)  #Flase

#5、循环
for line in tuple1:
   print(line)


#三 集合类型(一般用于去重)
#在{}以逗号隔开,可存放多个值,但集合会自带默认去重功能
set1={1,2,3,4,2,1,3,4}
print(set1)

#集合是无序的
set1=set({1,2,3,’tank’,18,’male’})
set2={1,2,3,’tank’,18,’male’}
print(set1)
print(set2)
#结果
#set({1,2,3,’tank’,18,’male’})
#{1,2,3,’tank’,18,’male’}

set2[‘name’]=’tank’
print(tyre(set2))
#结果:<class ‘dict’>
View Code

 

二、文件处理

 

#文件读写基本使用

#对文本进行操作
#open(参数1:文件的绝对路径/文件的名字,参数2:操作模式,参数3:指定字符编码)
#f:称之为 句柄
#r:避免转义符

#写文件
f=open(
r‘/python_files/安徽工程/files/文件的名字.txt’,mode=”wt”,
encoding=”utf-8”)

f.write(‘hello tank!’)  #写入文件

#打开文件会产生两种资源,一种是python解释器与python文件的资源,程序结束python会自动回收
#另一种是操作系统打开的文件资源,文件打开后,操作系统并不会帮助我们自动回收,所以要手动回收
f.close()  

#读文件
f=open(
r’/python_files/安徽工程/files/文件的名字.txt’,
‘rt’,  #t也可不写,默认rt
encoding=’utf-8’)

res=f.read()
print(res)

f.close()

#文件追加模式a
f=open(r’/python_files/安徽工程/files/文件的名字.txt’,
‘a’,  #默认at模式
encoding=’utf-8’)

f.write(‘\nhello jason’)

f.close()

#文件处理之上下文管理:with
#with会自带close()功能
#会在文件处理完以后自动调用close()关闭文件

#写文件
with open(r’/file1.txt’,’w’,encoding=’utf-8’) as f:
f.write(‘life is short,u need python!’)

#读文件
with open(r’/file1.txt’,’r’,encoding=’utf-8’) as f:
res=f.read()
print(res)

#文件追加
with open(r’/file1.txt’,’a’,encoding=’utf-8’) as f:
f.write(‘\n AAA’)


import request
res=request.get(
‘某网站.jpg’)    #某网站的图片url
print(res.content)  #从网上爬入图片二进制流

#写入图片
with open(‘大帅比.jpg’,’wb’) as f:
    f.write(res.content)  #写入图片二进制流

#读取图片
with open(‘大帅比.jpg’,’rb’) as f:
res=f.read()
print(res)  

#文件拷贝操作
#with可以管理多个文件
with open(‘大帅比.jpg’,’rb’) as f,open(‘小明.jpg’,’wb’) as w:  
res=f.read()
w.write(res)    

#读写视频
with open(‘视频文件.mp4’,’rb’) as f,open(‘视频文件_copy.mp4’,’wb’) as w:
res=f.read()
print(res)
w.write(res)

#一行一行读文件
with open(‘视频文件.mp4’,’rb’) as f,open(‘视频文件_copy.mp4’,’wb’) as w:
#一次打开文件所有内容,若文件的大小超出内存会导致内存溢出
f.read()

#一行一行读取文件内容,一行一行写入文件中,避免内存溢出
for line in f:
    w.write(line)

res=f.read()
print(res)
w.write(res)
View Code

 

 

三、函数基础

1、 什么是函数

函数相当于工具,需要事先准备好,在需要时再使用。

 

2、 如何使用函数 

函数必须先定义、后调用

 

3、 函数的语法

def cup(参数1,参数2…):

“””

函数的声明

例:水杯,用来盛水与喝水

“””

函数体代码(逻辑代码)

       return 返回值

‘’’

 

def:(全称defind) 用来声明定义函数的关键字 

函数名:看其名、知其意

():括号,存放的是接收外界的参数

注释:用来说明函数的作用

函数体代码:逻辑代码

return:后面跟函数的返回值

‘’’

#注册功能
#先定义
def register():
  while True:
#让用户输入用户名与密码
# strip() 不允许输入空格
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)
#字符串前写一个f相当于调用format方法    
user info=f’用户名:{user},密码:{pwd}’ 

#把用户信息写入文件中
with open(‘user.txt’,’w’,encoding=’utf-8’) as f:
    f.write(user_info)
break
else:
print(‘两次密码不一致,请重新输入!’)

#调用函数:函数名+括号,即调用函数
register()

‘’’
函数在定义阶段发生的事情:
1.先打开pythpn解释器
2.加载函数基础.py文件
3.python解释器会帮我们检测语法,但只会检测python语法,不会执行函数体代码
‘’’

def foo():
print(‘from foo!’)
bar()

#调用阶段,会执行foo函数体代码
foo()
View Code

 

 

 

今日作业

一、课堂代码敲一遍

二、整理笔记,并写博客 

三、用函数实现登录功能

‘’’

1、 让用户输入用户名与密码

2、 校验用户名是否存在

3、 用户名存在后校验密码是否正确,若正确打印“登陆成功”,否则打印“用户名或密码错误”,并让用户重新输入

4、 用户密码输入错误超过三次则退出循环

‘’’

 1 #登录功能
 2 def login():
 3     i=0
 4     while(i<3):
 5         name=input("用户名:").strip()
 6         pwd=input("密码:").strip()
 7         with open('user.txt','r',encoding='utf-8') as f:
 8         res=f.read()
 9         if name == user:
10             j = 0
11             while j < 3: 
12                  pwd = input('密码:')
13                  if pwd == password:
14                      print('登录成功!' ) 
15                      break 
16                  else:
17                  if j != 2:
18                      print('用户名或密码错误!')
19                  j += 1
20         else:
21              print('用户不存在!')
22     i=i+1
23 login()
View Code

 

posted @ 2019-06-12 21:29  鸡肉串  阅读(160)  评论(1编辑  收藏  举报