又到了每周笔记时间,有什么可以表达我的心情,总有一种付出了很多,回报却只有一点点的感觉,好难过。但是还得坚持呀,何必执着于结果,凡事看开些。
在老师回顾的上周作业中,看到几个之前不知道的写法。
username,password = user.split(',')#用字符串分割字符串后的list如果有两个字符串都要赋值,就可以简化成这样,等效于username = user.split(',')[0] password = user.split(',')[1].也就是a,b=['A','B''].
user =input('username:').strip().upper()#方法可以一直往后接。这个不难理解,通过strip方法之后的字符串仍然是字符串。所以可以连续使用字符串的方法
len(user) not in range(6,11) #判断长度是否在某个长度之间。可以这么写
本周新知识
1、常用的判断写法。#非空即真 ,非0即真.# True ‘1’ [1],{k-v} Fslse ‘’ None [] {}
2、读写文件的文件打开模式。首先,要操作文件就得打开文件,使用open方法。但不是想对文件怎样操作就怎样操作,所以要根据自己的需要,选择打开模式。如果有中文,open的参数里还要加encoding=‘utf-8’
# open('w.txt','w'):打开文件后,只能使用写的方法,写的时候清空原有文件。如果文件不存在会新建文件
# open('w.txt','r'):打开文件后,只能使用读的方法。如果文件不存在报错
# open('w.txt','a'):打开文件后,只能使用写的方法,以追加的方式写。文件不存在会新建文件
# open('w.txt','w+'):读写模式。能读,读不到内容,先把文件内容清空。有点扯淡
# open('w.txt','r+'):写读模式。能读,能写。但是文件不存在报错。文件指针在最前面
# open('w.txt','a+'):追加读。因为文件指针在最后,所以也是读不到内容。需要把文件指针移到最前面。res.seek(0)。就可以从最前面开始读了,写的时候还是从最后面开始写。
3、打开文件之后,如何把文件的内容取出来呢。使用read方法,通过read返回文件中的内容。一旦有返回,就表示可以直接打印。三种读文件的方法
# res.read()#读取文件所有内容,返回一个大字符串
# print(res.readline())#只读取第一行,返回结果是字符串
# print(res.readlines())#读取所有内容,返回的结果是list,元素是文件中的每一行的数据。
4、写文件的方法
write('字符串或变量,变量的值必须是字符串')。注意文件指针的位置
res.writelines(list)#把list中的每个元素依次写进文件,元素必须是字符串
5、修改文件 。
两种方法:
第一种方法是一次性读取文件得到一个大字符串,使用字符串方法把要修改的地方替换掉,得到一个新的大字符串,然后,清空文件,把新字符串存到文件中。不好用
# with open('w.txt','a+') as res: #另一种打开文件的写法,文件不用时自动关闭文件
# res.seek(0)
# a=res.read()
# new_a=a.replace('q','w')
# res.seek(0)
# res.truncate()#清空文件
# res.write(new_a)
第二种方法是,打开一个文件的同时新建一个文件,把从第一个文件读出来的数据,修改后,直接写到第二个文件中。然后删掉第一个文件,把第二个文件的名字改成第一个文件的名字。比较灵活,好用。
# import os#导入os模块
# with open('w.txt') as res,open('.w.txt','a+') as res1:
# for line in res:#循环文件的每一行的字符串
# new_line=line.replace('q','qq')
# res1.write(new_line)#把每次修改后的字符串写到另外一个文件中
# os.remove('w.txt')#删除文件
# os.rename('.w.txt','w.txt')#把.w.txt的文件名修改为w.txt
6、其它文件读写时常用的方法
res.truncate()#清空文件
res.flush()#刷新缓冲区,立即写到磁盘上。向文件中写数据,首先文件是在磁盘中的,而cpu直接操作的是内存,所以首先把要写入的东西放到内存的缓冲区,有一定大小,当缓冲区满了之后,再统一放大磁盘文件中。所以,有时需要立即写到磁盘中时,就可以用这个方法。
7、元组。元组的值是不能改变的,所以,常放一些不能改变的数据,如服务器地址信息、数据库连接信息,接口信息等。
#元组也是一个list,但是它的值不能改变
s=[1,2,3]
t = (1,2,3) #元组
mysql_info = ('118.24.3.40','root',3306,'123456')
oracle_info = (123,)#定义元组的时候,只有一个元素,后面得加逗号
print(type(oracle_info))
8、集合。集合中的元素是不重复的,也是无序的。不知道有啥用
l = [1,2,2,1,4,5]
lset = set(l)
print(lset)
stus1 = {'胡绍燕','王义','王新','马春波','高文平'}
stus2 = {'乔美玲','胡绍燕','王义','王新','马春波',"王一铭"}
#交集
res = stus1.intersection(stus2)
res2 = stus1 & stus2
#并集 把2个集合合并到一起,然后去除重复
res = stus1.union(stus2)
res2 = stus1 | stus2
#差集 前面一个有,后面一个没有的
res = stus1 - stus2
res2 = stus2.difference(stus1)
# print(res)
# print(res2)
#对称差集 只在一个集合里面出现过的,都给你整出来
res = stus1.symmetric_difference(stus2)
res2 = stus1 ^ stus2
print(res)
print(res2)
stus1.add('abc') #增加元素
stus1.pop() #随机删除一个元素
stus1.remove('王义') #删除指定的元素
for s in stus1:
print(s)
9、几个string模块的方法
import string
# print(string.ascii_lowercase)#返回小写a到z
# print(string.ascii_uppercase)#返回大写a到z
# print(string.ascii_letters)#返回小写a到z + 大写a到z
# print(string.digits)#返回0123456789
# print(string.punctuation)#返回特殊符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
10、random模块的几个方法
import random
print(random.randint(1,23))#随机整数
l=[1,2,3,4]
s='abcdefeg'
print(random.choice(s))#随机选择一个元素
print(random.sample(s,3))#随机选择几个元素
random.shuffle(l) #只能传list
f = random.uniform(1,19) #取随机的小数
newf = round(f,3) #取几位小数
11、函数。就是打包了的可以实现某个功能的一段代码。当我们调用这个函数的时候,就可以实现该函数的功能。一个函数,可以分为函数头和函数体。函数头:定义一个函数。sum是函数名,a是参数,即形参。其实就是变量。如果定义的函数有参数,而且函数体里要用到这个参数的值。那么调用函数的时候必须要输入参数,即入参。入参的数据类型要和形参保持一致,否则在执行函数体的时候可能会报错。参数可以定义多个。函数体,就是调用函数后,具体执行的代码,函数体可以有返回值,也可以没有返回值。
def sum(a):#函数头
sum=0
for i in a :
sum+=i
return sum
new_sum1=sum(range(100))
new_sum2=sum(range(200))
print(new_sum1)
print(new_sum2)