
python 黑帽编程 2.4 流程控制
本节要介绍的是 Python 编程中和流程控制有关的关键字和相关内容。
2.4.1 if …..else先上一段代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
x=int(input(' 请输入一个整数 :'))
if x==0:
print '%d ==0' % x
elif x<0:
print '%d <0' % x
else:
print '%d >0' % x
这段代码使用 if , elif 和 else 三个关键字,每一个关键字后面跟一个布尔表达式,以冒号结尾。跟在条件判断语句下面的是子语句,就是我们在此条件下要做的事情。
我将上面的代码保存到 ifelse.py 运行结果如下:

图 2
2.4.2 for 语句Python 中的 for 语句和 C 中的略有不同。通常的循环可能会由用户来定义迭代步骤和中止条件, Python 的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序列中的顺序来进行迭代。例如:
words = ['cat', 'window', 'defenestrate']for word in words:
print(word,len(word))
运行结果如下:

图 3
在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列,可以迭代它的副本。使用切割标识就可以很方便的做到这一点 :
words = ['cat', 'window', 'defenestrate'] for word in words[:]:if len(word)>6:
words.insert(0,word)
print words
上面的代码通过切片操作得到了 words 的一个拷贝,循环过程中可以修改 words 列表但是不会对循环造成影响。运行结果如下:

图 4
2.4.3 while 语句while 和 if 的区别在于, if 如果表达式为 true 的话会一次执行内部的代码,而 while 会循环执行,直到表达式为 false 。例如:
count=0
while(count<9):
print 'the index is:',count
count +=1
运行结果如下:

图 5
2.4.5 range 和 xrange使用 range 函数可以很方便的生成一个等差系列。 range 函数完整的声明如下:
range(start,end,step =1)
下面我们通过一小段代码看看 range 的使用方法:
a=range(5)
b=range(2,5)
c=range(2,5,2)
print a
print b
for i in c:
print "value is",i
这段代码示例了三种使用方式:
1) 只有一个参数时,传入值为 end ,起始值为 0 ,步长为 1 ;
2) 传递两个参数时,传入值为 start 和 end ,步长为 1 ;
3) 传递三个参数时,传入值为 start , end 和步长。
xrange 和 range 使用方法一样,区别有以下两点:
1) xrange 不生成完整的列表,效率更高;
2) xrange 只有在 for 循环中使用才有意义。
2 .4.6 break 、 continue 和 Passbreak 语句和 C 中的类似,用于跳出最近的一级 for 或 while 循环。
循环可以有一个 else 子句,它在循环迭代完整个列表(对于 for )或执行条件为 false (对于 while )时执行,但循环被 break 中止的情况下不会执行。
例如下面的代码:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
print(n, 'is a prime number')
上面的代码循环一个包含从 2 到 9 的一个系列,内部的循环实际是判断该数是不是素数。 if 语句如果为 true 的话证明找到了除 2 和本身以外的分解因子,证明这个数不是素数,接着会执行 break , 此时会跳出当前循环,因为有了 break 语句,和当前 for 循环对应的 else 语句也不会执行。在相反的情况下,如果是素数,当前循环会执行完毕, else 子句会执行。结果如下:

图 6
continue 语句是从 C 中借鉴来的,它表示循环继续执行下一次迭代,如下所示 :
for num in range(2,10):
if(num %2 ==0):
continue
print num
这是一段输出奇数的代码,结果如下:

图 7
pass 语句什么也不做,相当于汇编的 nop 指令。它用于那些语法上必须要有什么语句,但程序什么也不做的场合。通常我们使用 pass 语句来进行占位,比如规划程序功能和结构的时候,我们想好要定义哪些类,哪些方法,但是还没有具体实现的时候。比如:
def funcname(parameter_list):
pass
class classname(object):
pass
if a==0:
pass
else:
pass
2.4.7 小结流程控制的内容,就到此为止,下一节介绍函数。
第 2.5 节《函数》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单 “ 网络安全 ”―>”Python