python基础—元组、字典、函数、文件、异常
Tuple(元组)
tuple的元素不能修改
tuple写在小括号里 ,
只有一个元素的tuple也要加上 “,”
tup1=(1)
tup2=(2,)
print(type(tup1))
print(type(tup2))#只有一个元素后必须加 , 才能被认为是元组
#<class 'int'> tup1类型
#<class 'tuple'> tup2类型
tup3=(1,2,3,4,5,6,7,8,9)
print(tup3[1:5])#2.3.4.5
#增
tup=tup3+tup2
print(tup)#创造了一个新元组,
常用操作
访问元组中的元素 下标直接访问 print(tup1[2])
遍历元组 for for i in tup1:print(i)
元组的切片 使用[::] tup1[2:5:2]
加法操作
元组成员关系 in 2 in list1
得到重复元素数量 count tup1.count(1)
获取元组长度 len()
获取元组元素最大值 max()
获取元组元素最小值 min()
其他类型对象转换成元组 tuple()
dict(字典)
字典是无序对象的集合,使用键-值(key-value)存储,具有极快的查找速度。
键(key)必须使用不可变类型
同一个字典中,键(key)必须是唯一的
#字典的定义
info={"name":"lj","age":18}
#字典的访问
print(info["name"])
print(info["age"])
#访问了不存在的键
#print(info["grade"])
#直接访问报错
print(info.get("grade","nam"))#使用get方法没有找到对应的键则返回默认值“nam”
print(info.get("name",19))#结果为18,而不是19,在字典中有“name”
增
info["id"]="newId"
print(info["id"])
删
print("删除前:%s"%info["name"])
del info ["name"]
# del info#输出为空白,但不会报错
# print(info)
info.clear()#输出含{}
# clean (info)#输出会报错,
print(info)
改
info2={"name":"lj","age":18}
info2["age"]=20
print(info2["age"])#结果:20
查(遍历)
info2={"name":"lj","age":18}
print(info2.keys())#dict_keys(['name', 'age'])
#得到所有的键(列表)
print(info2.values())#dict_values(['lj', 18])
#得到所有的值(列表)
print(info2.items())#dict_items([('name', 'lj'), ('age', 18)])
#每一个键值是一个元组
#遍历所有的键值对
for key,value in info2.items():
print("key=%s,value=%s"%(key,value))#key=name,value=lj
#key=age,value=18
函数
函数的定义
def printinfo():
print("---------------")
print("人生苦短,我用python")
printinfo()
带参数的函数
def add2Num(a,b):
c=a+b
print(c)
add2Num(10,20)
带返回值的函数
def add2Num1(a,b):
return a+b
print(add2Num1(10,20))
返回多个值的函数
def divid(a,b):
shang=a//b
yushu=a%b
return shang,yushu
print(divid(10,3))
def hengxian():
x=(int(input("请输入:")))
a=random.randint(1,x)
print(a)
for i in range(1,a+1):
print(i,"*"*i)
hengxian()
结果:
请输入:15
5
1 *
2 **
3 ***
4 ****
5 *****
文件
f=open("test.txt","w")#打开文件,w模式(写模式),文件不存在就新建
f.write("hello world,I'm here!")#将字符串写入文件中
```python
f=open("test.txt","r")#要再次确定文件打开方式,将上面的w模式改成r模式
f=open("test.txt","r")#要再次确定文件打开方式,将上面的w模式改成r模式
content1 = f.read(5) #表示读取单个字符
print(content1)#hello
content1 = f.read(5)
print(content1)# worl 包括空格也当成一个字符读取
# 会延续上面已读的往下读,而不会再次从头开始读
content1=f.readlines()#表示读取整个一行文件
#readline与readlines不一样,前者输出还是一行
i=1
for temp in content1:
print("%d:%s"%(i,temp))
i+=1
# 包括空行也能输出
content2=f.readline()#在上面for循环中输出为单个字符输出,下面直接输出则是只输出一行
print(content2)
#同样为延续输出
f.close()#关闭文件
结果:
hello
worl
1:d,I'm here!#只有一行,而且延续上面已读
文件其他相关操作
1:文件重命名
import os
os.rename(”原名“,”现名“)
2:删除文件:
import os
os.remove(”文件名“)
3:创建文件夹:
import os
os.mkdir(”文件名“)
4:获取当前目录:
import os
os.getcwd()
5:改变默认目录:
import os
os.chdir("…/")
6:获取目录列表
import os
os.listdir("…/")
7:删除文件:
import os
os.rmdir(“文件名”)
异常
import time
try:
print("---1-------------------")
f=open("123.txt","r")
print("---2-------------------")
except IOError:
print("error")
#结果:---1-------------------
# error
#try里面的第二句没有执行
Exception可以捕获所有异常
try:
print(num)
except (IOError,NameError):#在括号中可以有多种可能出现的异常
#异常想要被捕获,需要与异常情况一致
print("出现错误")
except Exception as result:#Exception可以捕获所有异常
print("产生错误")
print(result)#name 'num' is not defined
#输出产生异常的原因
try…finally和嵌套
try:
f = open("test.txt", "r")
try:
while True:
content=f.readline()
if len(content)==0:
break
time.sleep(2)
print(content)
finally:#如果可以执行到此代码的第二个try,则finally一定会被执行
f.close()
print("关闭文件")
except Exception as result:
print("发生异常")
#结果:
hello world,I'm here!
hello world,I'm here!
hello world,I'm here!
hello world,I'm here!
hello world,I'm here!
hello world,I'm here!
关闭文件#finally被执行