2017.07.19 Python网络爬虫之Python语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.07.19 Python网络爬虫之Python语句相关的知识,希望对你有一定的参考价值。
1.if else 语句:非此即彼
if 判断条件1:
执行语句1
elif 判断条件2:
执行语句2
elif 判断条件3:
执行语句3
else:
执行语句4
编写一个testIfRamainder7.py 熟悉一下if语句:
# !usr/bin/env python
# -*- coding:utf-8 -*-
def isEvenNum(num):
if num%7==0:
print(u"%d 可以被7整除" %num)
else:
print(u"%d 不可以被7整除" %num)
if __name__==‘__main__‘:
numstr=raw_input("请输入一个整数:")
try:
num=int(numstr)
except ValueError:
print(u"输入有误,要求输入一个整数")
exit()
isEvenNum(num)
执行结果如下:
2.有限循环---for:
for Var in Sequence:
执行语句
编写一个testForGauss.py熟悉for循环语句:
# !usr/bin/env python
# -*- coding:utf-8 -*-
def cumulative(num):
sum=0
for i in xrange(1,num+1):
sum+=i
return sum
def main():
while True:
print(u"========================")
print(u"输入exit退出程序")
str_num=raw_input("从1累加到:")
if str_num==‘exit‘:
break
try:
sum=cumulative(int(str_num))
except ValueError:
print(u"除非退出输入exit,只能输入数字")
continue
print(u"从1累加到%d的总数是%d " %(int(str_num),sum))
if __name__ == ‘__main__‘:
main()
执行结果如下:
***仔细看下for循环的表达式,Sequence是一个序列,说明for循环不仅仅适用于数字形式的循环,比如可以将文件放入列表作为一个序列,然后对文件进行操作
3.无限循环--while:只要不满足某个条件,就一直循环下去直到满足条件为止:
while Boolean expression:
执行语句
编写一个testWhileSimulateLogin.py 模拟Linux终端登录:
# !usr/bin/env python
# -*- coding:utf-8 -*-
import getpass
class FakeLogin(object):
def __init__(self):
self.name=‘king‘
self.password=‘haha,no pw‘
self.banner=‘hello,you have login system‘
self.run()
def run(self):
"""仿Linux终端登录窗口"""
print(u"不好意思,只有一个用户king")
print(u"偷偷告诉你,密码是6个8欧")
while True:
print(u"Login:king")
pw=getpass.getpass("Password: ")
if pw == ‘88888888‘:
print(u"%s" %self.banner)
print(u"退出程序")
exit()
else:
if len(pw)>12:
print(u"密码长度应该小于12")
continue
elif len(pw) <6:
print(u"密码长度大于6才对")
continue
else:
print(u"可惜,密码错误。继续猜!!")
continue
if __name__ == ‘__main__‘:
f1=FakeLogin()
一开始运行失败啊:getpass函数不起作用
解决方法:不能在pycharm上运行,得在终端运行:
4.中断循环--continue,break:continue和break语句只能用于循环之中,只对循环起作用;
continue的作用是,从continue语句开始到循环语句结束,之间所有的循环语句不执行,直接从下一次循环重新开始
break语句的作用是,退出循环,该循环结束
编写一个随机猜数字的游戏,熟悉continue和break语句:
# !usr/bin/env python
# -*- coding:utf-8 -*-
import random
class GuessNum(object):
"""这个类用于猜随机数"""
def __init__(self):
print(u"随机产生一个0-100的随机数")
self.num=random.randint(0,101)
self.guess()
def guess(self):
i=0
while True:
print(u"猜这个随机数,0-100")
strNum=raw_input("输入你要猜的数字:")
i+=1
try:
print("******************************")
if int(strNum) <self.num:
print(u"你猜的数字太小了")
continue
elif int(strNum) >self.num:
print(u"你猜的太大了")
continue
else:
print(u"你总算猜对了")
print(u"你一共猜了%d次" %i)
break
except ValueError:
print(u"只能输入数字,继续猜吧!!")
continue
print(u"如果没有continue或break,就会显示这个,不信试试")
if __name__ == ‘__main__‘:
gn=GuessNum()
执行结果如下:
5.异常处理---tyr except:用try来测试可能遇出现异常的语句,except来处理可能出现的异常
try:
语句
except [exception,[data...]]:
Do something
except [exception,[data...]]:
Do something
except [exception,[data...]]:
Do something
因为同一语句可能出现不同的异常,所以也会给出不同的解决方法,编写一个testTryInput.py熟悉一下异常处理吧:
# !usr/bin/env python
# -*- coding:utf-8 -*-
class TryInput(object):
def __init__(self):
self.len=10
self.numList=self.createList()
self.getNum()
def createList(self):
print(u"创建一个长度为%d的数字列表" %self.len)
numL=[]
while len(numL)<10:
n=raw_input("输入一个整数:")
try:
num=int(n)
except ValueError:
print(u"输入错误,要求输入一个整数")
continue
numL.append(num)
print(u"现在的列表是:")
print(numL)
return numL
def getNum(self):
print(u"当前列表为:")
print(self.numList)
inStr=None
while inStr!=‘EXIT‘:
print(u"输入EXIT退出程序")
inStr=raw_input("输入列表下标[-10,9]:")
try:
index=int(inStr)
num=self.numList[index]
print(u"列表中下标为%d的值为%d" %(index,num))
except ValueError:
print(u"输入错误,列表下标是一个整数")
continue
except IndexError:
print(u"下标太大,访问列表超出范围")
continue
if __name__ == ‘__main__‘:
ti=TryInput()
执行结果如下:
6.导入模块---import:前边写的一个程序,后面就可以将它当成一个模块导入现在的程序中,取其精华去其糟粕的使用,代码重用性高的可怕,而且python还可以根据需求将C,C++,JAVA等程序作为模块,随意取用。
#同时导入多个模块
import module[,module2[,.........moduleN]]
#导入模块中的某个函数,类,变量
from modname import name[,name2[,..........nameN]]
#导入某个模块中所有
from modname import *
自己写一个模块,然后导入:testImportColorPrint.py:
# !usr/bin/env python
# -*- coding:utf-8 -*-
import sys
class ColorPrint(object):
def __init__(self,color,msg):
self.color = color
self.msg = msg
self.cPrint(self.color,self.msg)
def cPrint(self,color,msg):
colors={‘black‘:‘\\033[1;30;47m‘,‘red‘:‘\\033[1;31;47m‘,‘green‘:‘\\033[1;32;47m‘,‘yellow‘:‘\\033[1;33;47m‘,‘blue‘:‘\\033[1;34;47m‘,‘white‘:‘\\033[1;37;47m‘}
#注意这里[]没有“]”的存在,才是正确的
if color not in colors.keys():
print(u"输入的颜色暂时没有,按照系统默认配置的颜色打印")
else:
print(u"输入的颜色有效,开始彩色打印")
print(u"%s" %colors[color])
print(msg)
print(u"\\033[0m")
if __name__ == ‘__main__‘:
cp=ColorPrint(sys.argv[1],sys.argv[2])
必须在终端执行,执行结果如下:
导入testImportColorPrint模块到其他程序中使用:
# !usr/bin/env python
# -*- coding:utf-8 -*-
from testImportColorPrint import ColorPrint
if __name__ == ‘__main__‘:
p_black=ColorPrint(‘black‘,‘我是黑色打印‘)
p_black=ColorPrint(‘red‘,‘我是红色打印‘)
p_black=ColorPrint(‘green‘,‘我是绿色打印‘)
执行结果如下(不用在终端执行):
*****将Python程序当成模块导入的先决条件是,这两个程序在同一目录下,或者将模块化的程序的路径加入到Python的系统路径中
以上是关于2017.07.19 Python网络爬虫之Python语句的主要内容,如果未能解决你的问题,请参考以下文章
零基础自学Python 3开发网络爬虫: 用到的数据结构简介以及爬虫Ver1.0 alpha