1复习
#序列
'''在python中,序列类型包括字符串(普通字符串和unicode字符串)、列表和元组,
所谓序列,即成员有序排列,并且可以通过下边偏移量访问到它的一个或者几个成员。
'''
#今日内容
'''数据库 存储数据和信息用的 本质上和文件没有区别 增删改查更方便了
流程控制:条件判断和各种循环
为什么要有文件处理:内存---->硬盘
'''
#文件操作复习
#文件处理
#打开文件
#open('路径','打开方式 mode=','指定编码方式 encoding=')
#打开方式:r w a r+ w+ a+ rb r+b等
#r+ 读写 注意先读后写 不然会覆盖
#编码方式:utf-8
#操作文件
#读
#read 一次性读
#readline 一行一行读
#不知道在哪儿结束 视频图片等必须按照字节读不能一行一行读
#readlines一次性读按行切分放列表
#for循环读文件最好:从头到尾内存只有一行文件内容
#写
#write
可以换行(打印的还是换行符会换行不会打印出“
” 添加的时候会把‘
’添加进去
#光标:文件指针
#seek 按字节指定光标移到到某个位置
#tell 获取光标当前的位置
#truncate 按字符截取文件 返回字符数
#关闭文件
#close()
#修改文件
#open调用系统文件 windows系统默认gbk编码 如果不指定编码方式 因为python是utf-8会乱码
# with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8')as f2:
# for line in f:
# if "星儿" in line:
# line=line.replace('星儿','阿娇')
# #写文件
# f2.write(line)
# import os
# os.remove('小护士班主任')#删除文件
# os.rename('小护士班主任.bak','小护士班主任')#重命名文件
# s='alex'
# s='_'.join(s)
# print(s)
2初识函数
s='jjjjjj'
def my_len(): #定义/声明一个函数
i=0
for k in s:
i+=1
print(i)
length=my_len() #调用函数 带括号
print(length)
#定义了之后 可以在任何需要它的地方调用 没有返回长度 只是单纯打印
<<<
6
None
#return返回值的三种情况
#没有返回值:返回None
#不写return 只写return:return结束一个函数的继续 return None 相当于return
#返回一个值
#可以返回任何数据类型 只要返回就可以接收到 如果在一个程序中多个return,那么只执行第一个return
#返回多个值
#用一个或多个变量接收 得到一个元祖
def func():
l=['qq','ww']
for i in l:
print(i)
if i=='qq':
return
print('*'*6)
print(func())
def func():
return {'f':1}
print(func())
def func2():
return 1,2,3 #相当于(1,2,3),所以可以一个或3个变量接收 元祖列表字典都能解包
a,b,c=func2()
print(a)
def my_len(s):
i=0
for k in s :
i+=1
return i
a=my_len('hhhhh')
b=my_len([1,2,3,4,5,6])
print(a,b)
def f2(l1):
f1(l1)
for i in l1:
print(i,end='')
def f1(l1):
for i in l1:
print(i,end='')
f2([1,2,3,4,5])
def my_sum(a,b):
# print(a,b)
res=a+b
return res
ret=my_sum(1,2)
print(ret)
<<<
qq
None
{'f': 1}
1
5 6
12345123453
传参
#站在实参的角度上:按照位置传参 关键字传参 混着用的时候必须先位置传参然后关键字传参
#站在形参的角度上:位置参数:必须传 有几个参数传几个值 默认参数:不传就用默认的 传了就用传的
def classmates(name,gender='男'):
print('%s:%s'%(name,gender))
classmates(111,'女')
<<<
111:女
动态参数以及形参顺序
#动态参数:*args 接收所有位置参数 组织成一个元祖 **kwargs 接收所有关键字传参的值 组织成一个字典
#形参的顺序:位置参数 *args 默认参数 **kwargs
def sum(*args):
i=0
for k in args:
i+=1
return i
print(sum(1,2,3,6))
def func(**kwargs):
print(kwargs)
return kwargs
print(func(a1_=1,b=2,c=3))
def func(*args,default=1,**kwargs):
print(args,default,kwargs)
func(1,2,a=3,b=4)
<<<
4
{'a1_': 1, 'b': 2, 'c': 3}
{'a1_': 1, 'b': 2, 'c': 3}
(1, 2) 1 {'a': 3, 'b': 4}
动态参数的另一种传参方式
#动态参数的另一种传参方式
def func(*args):#站在形参角度上,给一个变量加上*,就是组合所有传来的值
print(args)
func(1,2,3)
l=(1,2,3,4,4)
func(l)
func(*l) #站在实参角度上,给一个序列加上*,就是将这个序列按顺序打散
d={'a':1,'b':2}
func(*d)
def func(**kwargs):
print(kwargs)
func(a=1,b=2)
d={'a':1,'b':2}
func(**d)
<<<
(1, 2, 3)
((1, 2, 3, 4, 4),)
(1, 2, 3, 4, 4)
('a', 'b')
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}
函数的注释
#函数的注释
# def func():
'''
这个函数实现了什么功能
参数1:
参数2:
return: 字符串或者。。。
'''
# pass
'''
文件的修改
函数
函数的定义
函数的调用
函数的返回值
函数的参数
形参:位置参数:必须传实参
*args:可以接收任意多个位置参数
默认参数:可以不传
**kwargs:可以接受任意多个关键字参数
实参:按照位置传参 按照关键字传参
函数 :内置函数 自定义函数'''
li=['alex','wusir','rain']
print('*'.join(li))
print('s s ssss'.split(' *'))
<<<
alex*wusir*rain
['s s ssss']
#1-2+3...+99
sum=0
for i in range(1,100):
if i%2==1:
sum+=i
else:
sum-=i
print(sum)
for i in range(10,-1,-1):
print(i,end='')
<<<
50
109876543210
#实现一个整数加法计算器 dic={'最终计算结果':结果}
content=input('请输入内容:')
content_list=content.split('+')
print(content_list)
sum=0
for i in content_list:
sum+=int(i) #int默认去空格
print(sum)
<<<
请输入内容:2 +99
['2 ', '99']
101
#将大于66得数保存到字典的第一个key中 小于66的保存到第二个key中
li=[11,22,33,44,55,77,88,90]
result={}
for i in li:
if i>66:
if 'key1'not in result:
result['key1']=[]
result['key1'].append(i)
else:
if 'key2'not in result:
result={'key2':[]}
result['key2'].append(i)
print(result)
li=[11,22,33,44,55,77,88,90]
result={}
for row in li:
result.setdefault('key1',[])
result.setdefault('key2',[])
if row >66:
result['key1'].append(row)
else:
result['key2'].append(row)
print(result)
<<<
{'key2': [11, 22, 33, 44, 55], 'key1': [77, 88, 90]}
{'key1': [77, 88, 90], 'key2': [11, 22, 33, 44, 55]}
user_list=[{'username':'barry','password':1234},
{'username':'alex','password':'asdf'}]
board=['zs','lxs','wemz']
while 1:
username=input('<<<')
if username.upper()=='Q':break
password=input('<<<')
for i in board:
if i in username:
username=username.replace(i,'*'*len(i))
user_list.append({'username':username,'password':password})
print({'username':username,'password':password})
print(user_list)
<<<hahaha
<<<111
<<<q
{'username': 'q', 'password': '111'}
[{'username': 'barry', 'password': 1234}, {'username': 'alex', 'password': 'asdf'}, {'username': 'q', 'password': '111'}]