• python3 第七章


    为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。

    Python中的循环语句有

    • while
    • for

    循环语句的执行过程,如下图:

    while 循环

    Python中while语句的一般形式:

    while 判断条件:
        语句

    以上语法的执行过程是:

    条件 True,执行 语句块1 的语句

    条件False ,执行 语句块2 的语句

    我们用while做一件事,计算1~100所有数字的总和:

    n = 100
    sum = 0
    counter = 1
    
    while counter <= n:
        sum = sum + counter
        counter += 1
    
    print("1 到 ", n, " 之和是:", sum)

    以上代码,输出:

    1 到  100  之和是: 5050

    有没有发现,用程序去做一些事,还是比较省心的,未来的世界是“机器的”,“智能的”,扯得有点远了。假如,我们的循环语句的条件是恒定为True,那会出现什么情况?

    while 2 > 1:  # 表达式永远为 true
        name = input('请输入您的名字:')
        print("您好 ", name)
    
    print("Good bye!")

     以上代码,输出:

    请输入您的名字:roy
    您好  roy
    请输入您的名字:

     你应该也发现了,程序会一直不断的要求你输入名字,程序在无限循环(又称死循环)。

    while也可以搭配else来用,当 条件 为 false 时执行 else 的语句块:

    while 判断条件:
        语句1
    else:
        语句2

     代码实例:

    count = 0
    while count < 5:
    print(count, " 小于 5")
    count = count + 1
    else:
    print(count, " 大于或等于 5")

     以上代码,输出:

    0  小于 5
    1  小于 5
    2  小于 5
    3  小于 5
    4  小于 5
    5  大于或等于 5

    for 循环

    基本语法:

    for 变量 in 序列:
        语句块

    以上语法的执行过程是:

    依次从序列中取一个元素,然后赋值给变量,并执行语句块,直到序列的所有元素都被赋过值。这一点,很像其它语言中的foreach。

    代码实例:

    languages = ["C", "C++", "Perl", "Python"]
    for x in languages:
        print(x)

    以上代码,输出:

    C
    C++
    Perl
    Python

    for也可以搭配else来用,当序列中所有值被赋值过一次后,执行 else 的语句块,语法如下:

    for 变量 in 序列:
        语句块1
    else:
        语句块2 

    实例

    languages = ["C", "C++", "Perl", "Python"]
    for x in languages:
        print(x)
    else:
        print('这里是else') 

    以上代码,输出:

    C
    C++
    Perl
    Python
    这里是else

    range()函数

    如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:

    for i in range(5):
        print(i)

    以上代码,输出:

    0
    1
    2
    3
    4

    你也可以使用range指定区间的值:

    for i in range(5, 9):
        print(i)

    以上代码输出:

    5
    6
    7
    8

     注意,以上代码输出是包含5,不包含9的

    也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做“步长”):

    for i in range(0, 10, 3):
        print(i)

    以上代码,输出:

    0
    3
    6
    9

    其中的,3 是步长

    来个负数的:

    for i in range(-1, -10, -3):
        print(i)

    以上代码,输出:

    -1
    -4
    -7

    其中的, -3 是步长

    思考:如何打印1~100的奇数,把你知道的方式都写出来。下面提供2种,但在你写出代码前,请尽可能不要先查看:

    方式1:

    n = 1
    
    while n <= 100:  # <=  的意思,请参阅第五章的Python比较运算符
        if n % 2 == 1:   # % 的意思,请参阅第五章的Python算术运算符
            print(n)
    
        n += 1  # += 的意思,请参阅第五章的Python赋值运算符
    View Code

    方式2:

    for n in range(1, 101):
        if n % 2 == 1:
            print(n)
    View Code


    break
    在循环中,break语句可以提前退出循环。例如,本来要循环打印1~5的数字:

    n = 1
    
    while n <= 5:
        print(n)
        n = n + 1
    
    print('END')

    以上代码,输出:

    1
    2
    3
    4
    5
    END

    如果我们希望,当n=3的时候就退出循环,我们可以这么做:

    n = 1
    
    while n <= 5:
        if n == 3:
            break
        print(n)
        n = n + 1
    
    print('END')

    以上代码,输出:

    1
    2
    END

    break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 实例如下:

    n = 1
    
    while n <= 5:
        if n == 3:
            break
        print(n)
        n = n + 1
    else:
        print('ELSE')
        
    print('END')

    以上代码,输出:

    1
    2
    END

    continue
    在循环过程中,也可以通过continue语句,跳过当前循环块中的剩余语句,然后继续进行下一轮循环。同样本来要循环打印1~5的数字,但我想当n=3时,不打印:

     1 n = 1
     2 
     3 while n <= 5:
     4     
     5     if n == 3:
     6         n = n + 1
     7         continue
     8     print(n)
     9     n = n + 1
    10 
    11 print('END')

    以上代码,输出:

    1
    2
    4
    5
    END

    思考,如果将第6行代码n = n + 1删除会出现什么现象,为什么?

    continue只会终止当前这次的循环,不会终止整个循环所以else语句将会继续执行:

    n = 1
    
    while n <= 5:
    
        if n == 3:
            n = n + 1
            continue
        print(n)
        n = n + 1
    else:
        print('ELSE')
    print('END')

    以上代码,输出:

    1
    2
    4
    5
    ELSE
    END

    注:

    • break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
    • 要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句。上面的例子,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句,请自行尝试改写一下

    pass 语句

    pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句,如下实例:

    while True:
        pass

    再来看下面的代码:

    n = 1
    
    while n <= 5:
        if n == 3:
            pass
            print('执行 pass 块')
        print(n)
        n = n + 1
    
    print('END')

    以上代码,输出:

    1
    2
    执行 pass3
    4
    5
    END
  • 相关阅读:
    javascript高级程序设计---Event对象三
    javascript高级程序设计---Event对象二
    javascript高级程序设计---Event对象
    javascript高级程序设计---CSS操作
    javascript高级程序设计---Element对象
    javascript高级程序设计---document节点
    javascript高级程序设计---NodeList和HTMLCollection
    javascript高级程序设计---DOM
    Javascript高级程序设计——客户端检测
    学习javascript系列之变量
  • 原文地址:https://www.cnblogs.com/mrbug/p/8260235.html
Copyright © 2020-2023  润新知