• Python黑帽编程2.4 流程控制


    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

    这段代码使用ifelifelse三个关键字,每一个关键字后面跟一个布尔表达式,以冒号结尾。跟在条件判断语句下面的是子语句,就是我们在此条件下要做的事情。

    我将上面的代码保存到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语句

    whileif的区别在于,if如果表达式为true的话会一次执行内部的代码,而while会循环执行,直到表达式为false。例如:

    count=0

    while(count<9):

        print 'the index is:',count

        count +=1

    运行结果如下:

    5

    2.4.5 rangexrange

    使用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)        传递两个参数时,传入值为startend,步长为1

    3)        传递三个参数时,传入值为startend和步长。

    xrangerange使用方法一样,区别有以下两点:

    1)        xrange不生成完整的列表,效率更高;

    2)        xrange只有在for循环中使用才有意义。

    2.4.6 break  continuePass

    break 语句和 C中的类似,用于跳出最近的一级forwhile循环。

    循环可以有一个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')

    上面的代码循环一个包含从29的一个系列,内部的循环实际是判断该数是不是素数。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”,获取更多内容。

     

  • 相关阅读:
    oracle客户端连接服务器基本教程
    java中字符串处理、串联和转换的几个常用方法,以及如果需要自己编程实现的具体实施步骤。
    面试相关
    java中byte是什么类型,和int有什么区别
    (华为机试大备战)java。多了解了解最常用的那个类库的方法对处理字符串的方法
    (华为)以下代码片段将创建一个仅保存大写字符的字段。
    (华为)以下代码片段将创建一个仅保存大写字符的字段。
    每个程序中只有一个public类,主类?
    我的第一个长程序,虽然是直接抄了书上,可是还是出现了两次拼写错误,最终还是找到异常的答案,改过来了。
    实践证明:当类想实现两个监听接口的时候,必须把两个都设置成内部类,不可能一个是外部类实现,一个是内部类实现。这样容易捕获错误,出现异常。
  • 原文地址:https://www.cnblogs.com/xuanhun/p/5737314.html
Copyright © 2020-2023  润新知