美文网首页
(二)Python控制流

(二)Python控制流

作者: langkee | 来源:发表于2017-12-16 20:20 被阅读66次

    Python有三种控制流:顺序结构、条件分支结构以及循环结构,事实上,这同样和其他语言是相通的。接下来,我们将一步步来了解Python的控制流语句。

    python的if条件分支语句

    首先,我们简单地来看一个if条件语句,其实也就是简单的逻辑判断

    a = 5
    
    if a > 5:
        print("a >= 5")
    elif a == 5:
        print("a = 5")
    else:
        print("print else")
        
    

    我们得到的打印结果是:

    a = 5
    

    很显然,a是等于5的,所以走了elif。注意的是,在python3中,我们写下一个if条件判断使用的是elif,而不是像其他语言一样使用的是熟悉的else if, 比如我们写成下面这样就会报错

    else if a == 5:
        print("a = 5")
    

    python语言的灵活赋予它极大的简洁性,在if条件语句中,我们的条件判断可以加括号(), 也可以不加,比如下面的写法也是支持的

    age = 18
    # 下面代码中,给条件加()也是可以的
    if (age > 18):
        print("age > 18")
    elif (age == 18):
        print("age == 18")
    else:
        print("age < 18")
    

    注意:在python语言中,有效的缩进是非常严格和重要的,一般来说,python推荐的是4个空格键缩进,或者使用tab键缩进即可。

    我们来看一段缩进错误的代码

    # 注意:这句代码开头空了一格
     age = 18
    
    if (age > 18):
        print("age > 18")
    else:
        print("age <= 18")
    

    在运行后:

      File "python.py", line 3
        age = 18
        ^
    IndentationError: unexpected indent
    

    意思就是告诉你缩进错误

    if的逻辑运算符 与(and)

    在日常开发中,有时候需要条件并列来判断是否成立,这时我们很自然就要用到逻辑运算符与(and)。和其他很多语言不一样的是,比如在swift中,我们经常使用操作符&&来表示条件的并列,但是python就不一样,我们看个例子:

    number = 15
    
    if number == 15 and number < 16:
        print("number == 15 and number < 16")
    elif number == 16:
        print("number >= 16")
    else:
        print("nothing")
    

    打印结果:

    number == 15 and number < 16
    

    很显然,第一个并列条件成立,即15=15并且15<16。

    if的逻辑运算符 或(or)

    操作方式与逻辑运算符 类似,这是意思不一样而已,表示只要成立其中任意一个条件即可

    dogs = 15
    
    if dogs == 16 or dogs < 17:
        print("dogs = 16 or dogs < 17")
    elif dogs  < 0:
        print("dogs >= 16")
    else:
        print("nothing")
    

    输出结果

    dogs = 16 or dogs < 17
    

    if的逻辑运算符 非(not)

    swift中,我们要一个取一个相反的条件,通常就是一个感叹号表示取反就好,但是,在python中,我们不再使用所用的感叹号!来给一个条件取反,而是使用python专有的逻辑运算符not, 我们来看下面这个例子

    
    a = 5
    if not a > 5:
        print("yes")
    else:
        print("no")
    
    
    输出结果:
    
    yes
    

    因为变量a等于5的, 对于条件a > 5肯定是不成立的,那么取反的话显然就成立了,所以有not a > 5, 即 a <= 5

    while循环语句

    python的控制流其实和Swift或者其他很多语言也极其相似,使用也非常简单。在日常开发中也会用到,只是大多数情况下使用的几率没有if条件语句多,我们来看下面一个while控制流代码

    
    a = 5
    while a < 10:
        print("a is " + str(a))
        a += 1
    
    
    输出结果:
    
    a is 5
    a is 6
    a is 7
    a is 8
    a is 9
    
    

    其实上面这个例子想当初级,基本上我想大家都知道,也不用我过多的解释了。补充一点点,刚才也说过,在python的基本控制流中,我们可以对条件使用括号(),也可以不使用括号,比如下面这样写法是一样的

    a = 5
    while (a < 10):
        print("a is " + str(a))
        a += 1
        
        
    输出结果:
    
    a is 5
    a is 6
    a is 7
    a is 8
    a is 9
    
    

    python中的for循环

    在每一种语言中,for循环几乎是无处不在的,我们来看看python中的for循环,其实也非常简单

    names = ["dog", "rabbit", "cat"]
    for name in names:
        print('animal is ' + name)
        
        
    输出结果:
    
    animal is dog
    animal is rabbit
    animal is cat
    
    

    python中,我们在for循环中经常还会用到一种范围称为range(), 它的使用有时候会使我们的操作变得非常方便,比如我们现在想要输出1到9,我们可以操作range()来达到输出效果

    for i in range(1, 10):
        print(i)
        
        
    输出结果:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    

    python中的break语句

    每一种语言,其实万变不离其宗python也是如此,比如python中也有常用的break语句,以及 continue语句,下面,我们来看一个简单的例子

    people = ["Jhon", "Alice", "Madson"]
    for man in people:
        if man == "Alice":
            break
        print("where is " + man + "?")
    
    
    
    输出结果:
    
    where is Jhon?
    

    解释一下,当遍历数组people时,在里面判断,若man这个人是Alice的时候,使用break来退出本层循环

    那接着我们来看一下breakcontinue的区别

    people = ["Jhon", "Alice", "Madson"]
    for man in people:
        if man == "Alice":
            continue
        print("where is " + man + "?")
        
    输出结果:
    
    where is Jhon?
    where is Madson?
    
    

    很显然,关键字break是退出本层循环, 而关键字continue是退出本次循环。在日常使用中,一定要注意这两者的区别,否则会造成意想不到的结果。

    python练习

    在学习了python的简单控制流后,我们初步了解了pythonforwhileif等控制条件循环语句,并且也了解了关键字breakcontinue,以及范围符range()的使用。现在,我们来练习一下,如何输出一个乘法口诀表呢?

    乘法口诀表如下

    for i in range(1, 10):
        for j in range(1, i + 1):
            # end = " " 代表不换行输出空格,我们也可以使用 end = "\t"代替不换行输出,效果是一样的
            print(str(i) + "*" + str(j) + "=" + str(i * j), end = " ")
        # 代表换行
        print("")
    

    输出结果

    1*1=1     
    2*1=2 2*2=4     
    3*1=3 3*2=6 3*3=9     
    4*1=4 4*2=8 4*3=12 4*4=16     
    5*1=5 5*2=10 5*3=15 5*4=20 5*5=25     
    6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36     
    7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49     
    8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64     
    9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81  
    

    既然现在我们成功地输出了乘法口诀表,那么逆向思维一下,我们可不可以输出逆向的乘法口诀表呢?答案显然是可能的,而且方法并不唯一,我们看看下面的代码

    for i in range(9, 0, -1):
        for j in range(i, 0, -1):
            print(str(i) + " * " + str(j) + " = " + str(i * j), end = "\t")
        print()
    
    

    输出结果

    9 * 9 = 81  9 * 8 = 72  9 * 7 = 63  9 * 6 = 54  9 * 5 = 45  9 * 4 = 36  9 * 3 = 27  9 * 2 = 18  9 * 1 = 9   
    8 * 8 = 64  8 * 7 = 56  8 * 6 = 48  8 * 5 = 40  8 * 4 = 32  8 * 3 = 24  8 * 2 = 16  8 * 1 = 8   
    7 * 7 = 49  7 * 6 = 42  7 * 5 = 35  7 * 4 = 28  7 * 3 = 21  7 * 2 = 14  7 * 1 = 7   
    6 * 6 = 36  6 * 5 = 30  6 * 4 = 24  6 * 3 = 18  6 * 2 = 12  6 * 1 = 6   
    5 * 5 = 25  5 * 4 = 20  5 * 3 = 15  5 * 2 = 10  5 * 1 = 5   
    4 * 4 = 16  4 * 3 = 12  4 * 2 = 8   4 * 1 = 4   
    3 * 3 = 9   3 * 2 = 6   3 * 1 = 3   
    2 * 2 = 4   2 * 1 = 2   
    1 * 1 = 1
    

    这样一个简单的逆向乘法口诀表就完成了,当然,也有其他的输出方法,答案是唯一的,但是方法并不是唯一的。

    相关文章

      网友评论

          本文标题:(二)Python控制流

          本文链接:https://www.haomeiwen.com/subject/yalewxtx.html