大纲:
1.集合操作
2.文件操作
3.分支语句
一.集合操作
概念:我们把一些元素的总体叫做集合
特点:明确性,无序性,互异性
与列表和元组不同,集合是无序的,也无法通过数字进行索引。
#列表的创建
a=[1,2,3,4]
b=list([1,2,3,4])
print(type(b))
#元祖的创建
c=(1,2,3)
d=tuple([1,2,3])
print(type(d))
#字典的创建
e={1:2,3:4}
f=dict({1:2,3:4})
print(type(f))
1.集合的创建
list0="hello"#字符串
b=set(list0)#创建->集合
print(b)
#{'h', 'e', 'l', 'o'}
list1=[1,5,8,9,7,6,6]#列表
a=set(list1)#创建-->集合
print(a)
#{1, 5, 6, 7, 8, 9}
集合的特点:
1)集合一个非常重要的功能就是去重
2)创建集合的对象必须可hash,字符串,列表,元祖,字典等
3)集合是无序的
2.集合的相关操作
以下操作结果的基准都是a,b,c的原始赋值
list1=[1,5,8,9,7,6,6]
a=set(list1)
print(a)#{1, 5, 6, 7, 8, 9}
list0="hello"
b=set(list0)
print(b)#{'h', 'e', 'l', 'o'}
list2=[2,0,66,8,7,9]
c=set(list2)
print(c)#{2,0,66,8,7,9}
print(a.intersection(c))#1.交集 #a&b {8, 9, 7}
print(a.union(c))#2.并集 #a|b {0, 1, 2, 5, 6, 7, 8, 9, 66}
print(a.difference(c))#3.差集 #a-b {1, 5, 6}
print(a.issubset(c))#4.子集 False
print(a.issuperset(c))#5.父集 False
print(a.symmetric_difference(c))#对称差集 集合A与集合B的对称差集定义为集合A与集合B中所有不属于A∩B的元素的集合,记为A△B {0, 1, 2, 5, 6, 66}
print(a.isdisjoint(c)) #判断有没有交集,没有是TRUE,有是FALSE False
a.add(99)
print(a) #添加{1, 99, 5, 6, 7, 8, 9}
a.remove(5)
print(a) #删除 {1, 6, 7, 8, 9}
print(len(b)) #求集合长度 4
c.pop()
print(c) #随机删除一个
b.discard("e")
print(b) #删除 {'h', 'l', 'o'}
print("l" in b ) #判断是否是成员 True
print("l" not in b ) #判断是否是成员 False
二.文件的基本操作
1.打开文件
#1.打开文件
f1=open("凉凉","r",encoding="utf-8")
1)f1的open方法打开文件有三个参数,第一个参数指打开的文件的名字,第二个参数指以什么方式打开这个文件,第三个参数是指以UTF8编码方式转换数组为字串
2)文件的打开方式:
r 只读,r+读写,不创建
w新建只写,不能读,w+新建读写,二者都会将文件内容清零
r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建
a:附加写方式打开,不可读;a+: 附加读写方式打开,会在文件的末尾接着写
rb,wb:都是以二进制形式打开写入,二进制文件(例如:视频文件,网络传输也是使用二进制形式)
以 ‘U’ 标志打开文件, 所有的行分割符通过 Python 的输入方法(例#如 read*() ),返回时都会被替换为换行符\n
3)注意字符编码的转换,在后面会详细的讲到
2.读取文件
#1.打开并读取文件,此处的读取文件是读取整个文件,read(n)-读取文件的n个字符
f2=open("凉凉",encoding="utf-8").read()
print(f2)
#2.以列表的形式读取文件
f1=open("凉凉","r",encoding="utf-8")
#readlines()-逐行读取出整个文件的内容,以列表的形式返回结果
print(f1.readlines())
#3.循环文件-----最优
for i in f1:
print(i.strip())
利用read()和readlines()方法我们只能一次性读取出整个文件(这里补充一下,文件的读取是一次性的,读完就不可再读)
1)要想读取我们想要的行数
#读取前5行的内容
f1=open("凉凉","r",encoding="utf-8")
#利用循环遍历一行一行的读取内容,readline()-逐行读取
for i in range(5):
print(f1.readline().strip())
#在第十行插入我想要的新内容
f1=open("凉凉","r",encoding="utf-8")
for index,item in enumerate(f1.readlines()): #利用enumerate取得列表的下标和元素
if index==10:
print("--------------------")
print(item.strip())
2)只取出第六行的数据并加以修改
f=open("凉凉","r",encoding="utf8")
print(f.readlines()[5].strip()+"i like it")
#结果:前世你怎舍下i like it
3.打印进度条
flush()用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入
import sys,time
for i in range(50):
sys.stdout.write("#")#stdout是标准输出
time.sleep(1)
sys.stdout.flush()#刷新
4.为了避免忘记关闭文件,我们可以使用with的方式打开文件
with open("凉凉","r",encoding="utf-8") as f:
5.关闭文件 f.close()
6.显示当前光标的位置f.tell(),默认在0,一个英文字符占1个字符,一个中文汉字占3个字符
7.调整光标的位置f.seek(n)
三.分支语句
1.三元运算
result=值1 if 条件 else 值2
2.if..else语句
输入用户名和密码,通过判断是否正确
age=int(input("age:"))
if age<30:
print("i am young")
elif age<50:
print("oh i am become old..")
else:
print("i am old")
3.while语句
count=0
while count<10:
print("happy")
count+=1
#white TRUE:是无限循环的意思
4.for语句
for i in range(10):
print("loop:", i )
5.break和continue区别
//break是结束整个循环体,continue是结束单次循环
比方说:
while(x++ < 10)
{
if(x == 3)
{
break;
}
printf(“%d\r\n”, x);
}
结果是输出 1 2 就退出了整个while循环
但是如果使用continue
while(x++ < 10)
{
if(x == 3)
{
continue;
}
printf(“%d\r\n”, x);
}
结果是:1 2 4 5 6 7 8 9 10 可见他仅仅是不输出3,因为他结束了本次循环