首页 > 代码库 > 2017.07.19 Python网络爬虫之Python语句

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语句