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和Pass

break 语句和 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黑帽编程进入即可。

本节视频教程获取方法,请扫描二维码,在菜单网络安全”——>”Python黑帽编程中找到对应的本文2.2.7节,有详细方法。

由于教程仍在创作过程中,在整套教程完结前,感兴趣的同学请关注我的微信订阅号(xuanhun521,下方二维码),我会第一时间在订阅号推送图文教程和视频教程。问题讨论请加qq群:Hacking (1群):303242737   Hacking (2群):147098303。

关注之后,回复请回复“Python”,获取更多内容。

Python黑帽编程2.4 流程控制的更多相关文章

  1. Python 黑帽编程大纲(变化中)

    Python 黑帽编程大纲(预览版) 教程说明: 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Pytho ...

  2. Python黑帽编程2.3 字符串、列表、元组、字典和集合

    Python黑帽编程2.3  字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...

  3. Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

  4. Python黑帽编程2.9 面向对象编程

    Python黑帽编程2.9 面向对象编程 我个人认为,计算机语言的发展,有两个方向,一个是从低到高的发展过程,在这个过程中,语言的思考和解决问题的方式是面向硬件的.硬件本质上处理的是信号,在此基础上, ...

  5. Python黑帽编程 3.4 跨越VLAN

    Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...

  6. Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

    Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Att ...

  7. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  8. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  9. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

随机推荐

  1. C#设置IE代理及遇到问题的解决方案

    起初使用的方法是修改完一次代理之后就不能继续修改,需要重新启动一次进程才可以,最初代码是: private void ShowProxyInfo() { if (!GetProxyStatus()) ...

  2. ppmoney 总结一

    1.JQ $.get() <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. Python-Hello world!

    一.Python安装 Windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python3.5 3.配置环境变量: [右键计 ...

  4. 体验Visual Studio 2015 之 MVC - 视图组建

    VS2015 PERVIEW中可以创建MVC 项目. 我们可以 发现有几大亮点. 首先我们看目录结构: 当前项目包含两个主要的文件夹:Solution Items .src 很明显src文件夹下为当前 ...

  5. UVALive 4728 Squares (平面最远点对)

    题意:n个平行于坐标轴的正方形,求出最远点对的平方 题解:首先求出凸包,可以证明最远点对一定是凸包上的点对,接着可以证明最远点对(每个点的对踵点)一定只有3*n/2对 接着使用旋转卡壳找到最远点对,但 ...

  6. 调用0A中断输入字符串数据段的DUP定义

    ;这是自动生成的代码模板 STACKS SEGMENT STACK ;堆栈段 DW DUP(?) ;注意这里只有128个字节 STACKS ENDS DATAS SEGMENT ;数据段 STRING ...

  7. Gridview中几个Button的应用

    gridview中有三种方式添加button的应用,CommandField.ButtonField.TemplateField中加Button这三种方式.三种方式都可以实现同样的功能,但在实现某些功 ...

  8. php 二位数组按某个键值排序

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

  9. Maven 配置远程仓库

    最近要用到一个包:spark-1.6.0-cdh5.8.2,在https://mvnrepository.com网站上搜到该包的pom.xml语句.但是看到下面有这样一句话: 该包在图中所述repos ...

  10. R内存管理与垃圾清理

    1.内存查看 memory.limit():查看内存大小 memory.limit(n):申请内存大小 memory.size(NA):查看内存大小 memory.size(T):查看已分配的内存 m ...