您的位置:首页 > 编程语言 > Python开发

4000 python学习之路-基础篇-day02

2017-08-02 20:43 204 查看
大纲:

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,因为他结束了本次循环
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: