欢迎来到煊煊周末小课堂!蹭了非常善良的热心学长的网课,七次感谢!让我们一起祝福他飞黄腾达!
让我们继续上次的Python知识
异常处理
try:
var=float(input("请输入数字:"))
print(1/var)
except ZeroDivisionError:
print("分母不能为0")
except ValueError:
print("值错误")
print("其他语句不受影响")
当不知道是什么异常的时候,可以用exception通用
finally,最终执行操作,格式如下:
try:
#except:
finally:
如果想看具体的异常信息的时候,再用raise抛出异常即可,不想看在注释掉,例如:
try:
var=float(input("请输入数字:"))
print(1/var)
except ZeroDivisionError:
print("分母不能为0")
raise ZeroDivisionError
import语句
#语法1
import math
math.sqrt(4)
#语法2
from math import sqrt,log10
print(sqrt(4))
print(log10(10))
#语法3
import math as mm
mm.sqrt(4)
#以后会学到的
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#语法4,导入包下面的所有函数
from math import *
生成器与迭代器
#iter()创建爱你迭代器
dict={'a':1,'b':2,'c':3}
dict_iter=iter(dict)
#next实现迭代
next(dict_iter)
#也可以用for循环来实现
for i in dict_iter:
print i
当执行第一次迭代时,输出a,第二次执行的时候输出b,第三次执行的时候输出c。第四次显示执行结束。
生成器:一边循环一边计算的一种计算机制
#复习列表推导式生成列表
#L=[x*x for x in range(5)]
#print(L)
#创建生成器
g=[x*x for x in range(5)]
print(next(g))
print(next(g))
print(next(g))
输出:
0
1
4
用for循环来继续实现上述功能
for i in g:
print(i)
此时输出:
9
16
没错,他会接在上面的语句继续输出,因为生成器会记住上次的位置
通过函数创建生成器,yield:
#普通写法
def seq(max):
x=1
d=2
while x<max:
print(x)
x+=d
seq(7)
输出:
1
3
5
#用yield来实现上面功能
def seq_g(max):
x=1
d=2
while x<max:
yield(x)
x+=d
seq_g(7)
此时输出不会有内容
next(seq_g(7))
此时才会一个一个的显示1,3,5
类和对象
这里其实主要概念都和其他面向对象语言没什么区别
#创建Animal类
class Animal:
def __init__(self,name,age):
self.name=name
self.age=age
def sit(self):
return self.name+" is now sitting"
#创建对象或者说类的实例
dog=Animla('汪汪',3)
print(dog.name)
print(dog.age)
dog.sit()
#创建新对象
cat=Animal('喵喵',2)
#创建Dog类,继承Animal
classs Dog(Animal):
def sit(self):
print(self.name+"is now sitting.my age is%d"%self.age)
Taidi=Dog('小太',2)
Taidi.name
Taidi.sit()
文件读取
#文件读取
file_object=open('../data/pi.txt')
contents=file_object.read()
print(contents)
#文件关闭,文件使用后必须关闭
file_object.close()
with open:文件读写可能出现异常,后面的close方法就不会调用,此时Python引用了with语句就可以自动调用close()方法。
with open('../data/pi.txt') as file_object:
contents=file_object.read()
print(contents)
逐行读取
with open('../data/pi.txt') as file_object:
contents=file_object.readline()
print(contents)
此时输出就会只读取第一行内容
多行读取:
with open('../data/pi.txt') as file_object:
contents=file_object.readlines()
print(contents)
此时输出是以列表形式输出,比如['第一行的内容\n','第二行的内容\n']
但此时也可以用引用contents[0]
的方式引用第一行
strip:去除字符串两端的空格以及换行符,比如contents[0].strip()
L=[]
for i in contents:
L.append(i.strip())
print(L)
文件写入
#后面的参数w代表以写入的方式打开文件
with open('../data/pi.txt','w') as file_object:
file_object.write("哈哈")
file_object.write("嘿嘿")
#后面的参数a代表append追加
with open('../data/pi.txt','a') as file_object:
file_object.write("追加的内容")