Python学习
输出
print("hello")
换行:print("",end="\n")
输入
name = input("请输入:")
print(name)
判断语句
if 3<4:
print("条件成立") # 缩进四个空格
elif 3==4:
print("分支条件成立")
else
print("条件不成立")
# 判断条件
and 并且
or 或者
not 取反
变量
name="hello"
print(name)
num=10
str(num) # 将num转为字符串类型
字符串
if "yes" in "yess"
print("yes")
in
关键字用来判断一个字符串是否包含在另一个字符串中。
name="hello"
print(name[0:100]) # 输出hello
print(name[0:100:2]) # 输出hl0
print(name[-1]) # 输出o,输出从后数n位字符
# 变量[脚标的开始位置:角标的结束位置:步长值]
字符串常用属性
string="hello"
string.lower # 返回小写字符
string.upper # 返回大写字符
string.split("e") # 切割字符串,返回一个列表
列表
alist=["tom","jerry"] # 创建列表
alist[0] # 取列表值
alist.index("tom") # 返回该值的索引
alist.append("bob") # 向列表中追加内容
元祖
元祖被初始化后值就不可变了,不可删除不可追加,也不可修改
atuple=("tom","jerry") # 创建元祖
atuple[0] # 取值
atuple.index("tom") # 返回该值的索引
字典
字典没有索引值,通过键值对取值
adict={
"tom":"123"} # 创建字典
adict["tom"] # 取值
adict.keys() # 返回一个key列表
adict.values() # 返回一个value列表
循环语句
num =0
while num<10
print("hello")
num++
for item in range(10):
print("hello"+str(item)) # 需要将item转为字符串才能和字符串拼接
# 补充知识点
range(1,11) # 生成1-10的数字
range(10) # 生成0-10的数字
文件对象
读取文件内容
f=open("C:\\users\\test.txt","rb") # 建立文件对象 r为读 b为二进制方式
f.read() # 读取文件
f.read(5) # 表示读取5个字节
f.seek(0,0) # 设置下标设置为零,第一个为偏移量
f.readline() # 读取一行
f.readlines() # 读取全文,按行返回一个列表
f.close() # 关闭文件
写入文件内容
f=open("C:\\users\\test.txt","wb") # 建立文件对象
f.writelines([b"test1",b"test2",b"test3"]) # 多行写入
f.close()
模块和函数
import random # 引入随机模块
random.randint(1,3) # 返回一个1-3之间的随机数
random.choice(alist) # alist是一个list,返回list中随机的值
创建一个模块
创建一个文件test.py
,写入如下内容:
"""
这里是对这个py文件的描述
介绍模块的作用以及里面的功能
"""
def p_star():
"这里是方法的描述"
return "*"*20
p_star() # 执行这个方法
另一个文件中如下调用:
import test
start20=test.p_star()
print(start20) # 打印二十个*号
异常捕获
num=int(input("请输入数字:"))
try:
a=0/10
except zeroDivisionError:
print("被除数不能为0")
except ValueError:
print("不是数字")
面向对象编程
Class Make_Plane(object):
# 属性
# color="green"
# num=3
# 方法
def move(self):
print("飞机起飞了")
def getInfo(self):
print("轮胎数量%d,飞机颜色%s" %(self.num,self.color))
# 构造方法 self表示当前对象
def _init_(self,COLOR,NUM):
self.color=COLOR
self.num=NUM
# 创建对象
myClass=Make_Plane("blue",4)
myClass.move() # 调用方法
爬虫
爬取图片案例:
import urllib.request
import re
Class GetHtml(Object):
def _init_(self,URL,HEAD):
self.url=URL
self.head=HEAD
# 获取网页HTML内容 保存文件到本地
def get_index(self):
self.request=urllib.request.Request(self.url)
self.request.add_header("user-agent",self.head)
self.response=urllib.request.urlopen(self.request)
return self.response.read()
# 获取图片的链接
def get_list(self):
self.strimglist=[]
self.imglist=re.findall(b"正则表达",self.get_index())
for i in self.imglist:
strimglist.append(self.url+str(i,encoding="utf8"))
return self.strimglist
# 获取图片
def get_image(self):
num = 0
for self.url in self.get_list():
num+=1
with open(str(num)+".jpg","wb") as f:
f.write(self.get_index())
html=GetHtml("https://www.baidu.com/","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36")
print(html.get_index()) # 获取该链接的html代码
正则表达式
# . 匹配单个任意字符
re.findall(".ood","i say Good not food") # 查找以ood结尾的单词,如Good、food
# [] 中的内容会被逐一匹配
re.findall("[Gf]ood","i say Good not food")
# \d 匹配单个数字
re.findall("\d","i am 40") # 输出 ['4','0']
re.findall("\d\d","i am 40") # 输出 ['40']
# \w 匹配单个字母、数字、下划线
# \s 匹配空白字符、空格、tab键
匹配一组字符串
re.findall("Good","i say Good not food") # 输出 Good
re.findall("Good|food","i say Good not food") # 输出 Good food
re.findall("")
*
号 匹配左邻字符串出现0次或者多次(它左边的字符出现的次数)
re.findall("go*gle","i like google not ggle gooooogle and gogle") # 输出 google ggle gooooogle gogle
+
号 左邻字符出现一次或多次(它左边的字符出现的次数)
re.findall("go+gle","i like google not ggle gooooogle and gogle") # 输出 google gooooogle gogle
?
号 左邻字符出现0次或1次
re.findall("go+gle","i like google not ggle gooooogle and gogle") # 输出 ggle gogle
{}
指定左邻字符出现的次数
re.findall("go{2}gle","i like google not ggle gooooogle and gogle") # 输出 google
re.findall("go{2,10}gle","i like google not ggle gooooogle and gogle") # 输出 google gooooogle
^
匹配是否以某个字符串开头
re.findall("^i like","i like google not ggle gooooogle and gogle") # 输出 i like
$
匹配是否以某个字符串结尾
re.findall("gogle$","i like google not ggle gooooogle and gogle") # 输出 gogle
()
分组保存
re.search("(allen)\\1","my name is allenallen")