• Python流程控制-while循环-for循环


    写重复代码 是可耻的行为

    -------------- 完美的分割线  --------------

    摘录自:http://www.runoob.com/python/python-loops.html

    程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径。

    循环(loop)用于解决重附代码的问题

    循环语句允许我们用简单的方法执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式

    1.循环类型

    1.1.循环分类

    1)根据循环次数分类

    有限循环(次数限制)
    无限循环(死循环)

    2)根据语法可以分为以下类型:

    Python提供了for循环和while循环(在Python中没有do..while循环):

    循环类型描述
    while 循环 在给定的判断条件为 true 时执行循环体,否则退出循环体。
    for 循环 重复执行语句
    嵌套循环 你可以在while循环体中嵌套for循环

    1.2.循环控制语句

    循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:

    控制语句描述
    break 语句 在语句块执行过程中终止循环,并且跳出整个循环
    continue 语句 结束本次循环,进入下次循环
    pass 语句 pass是空语句,是为了保持程序结构的完整性。

    注意:

    shell脚本里用break2可以跳出2层循环,但python不可以,这不是好语法,会造成语义混乱

    2.while循环

    2.1.while循环语法

    Python 编程中 while循环是指在某条件下,重复执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

    while 判断条件:
        执行语句……

    执行语句可以是单个语句或语句块。

    判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。

    执行流程图如下:

    # 实例1:循环打印0-100

    count = 0
    while count <= 100:
        print("loop ",count)
        count += 1
    print("-------end-------")

    # 实例2:打印100以内的偶数

    count = 0
    while count <= 100:
        if count % 2 == 0:        # 除以2余数为0的数
            print("loop ",count)
        count += 1
    print("-------end-------")

    # 实例3:第50次不打印,第60-80打印对应值的平方

    count = 0
    while count <= 100:
        if count == 50:
            pass         #
        elif count >= 60 and count <= 80:
            print(count*count)
        else:
            print(count)
        count += 1
    print("-------end-------")

    2.2.死循环(无限循环)

    语法:

    while True:
        执行代码...

    # 实例1:死循环

    count = 0
    while True:
        print("forever  ",count)
        count += 1

    2.3.循环终止语句

    break 完全终止循环
    continue 终止本次循环,跳过本次循环
    exit() 任意位置退出程序

    # 实例1:break退出循环

    count = 0
    while count <= 100:
        print("loop ",count)
        if count == 5:
            break
        count += 1
    print("-----out of while loop-----")

    # 实例2:玩猜年龄3次就退出了

    age = 26
    count = 0
    while count < 3:
        age_guess = int(input("猜猜年龄:"))
        if age_guess == age:
            print("猜对了!")
            break
        elif age_guess < age:
            print("猜大点")
        else:
            print("猜小点")
        count += 1

    # 实例3:玩猜年龄3次后问是否还要玩

    age = 26
    count = 0
    while count < 3:
        age_guess = int(input("猜猜年龄:"))
        if age_guess == age:
            print("猜对了!")
            break
        elif age_guess < age:
            print("猜大点")
        else:
            print("猜小点")
        count += 1
        if count == 3:
            again = input("还想玩吗[y]:")
            if again == 'y':
                count = 0
            else:
                exit('byebye')

    2.4.python中while的特殊语法

    语法:

    while...else语句

    while循环正常执行完,中间没有被 break 中止,就执行else语句
    推论:没有看到else后面的语句就说明循环被中断过

    else 作用:可以让你知道你的程序中间是否被break过

    # 实例1:while...else正常执行完

    count = 0
    while count <= 5:
        count += 1
        print("loop ",count)
    else:
        print("循环正常执行完了")
    print("-------end-------")

    返回结果如下:

    loop 1
    loop 2
    loop 3
    loop 4
    loop 5
    loop 6
    循环正常执行完了
    -------end-------

    # 实例2:while...else被break打断

    count = 0
    while count <= 5:
        count += 1
        if count == 3:
            print('终止循环')
            break
        else:
            print("loop ", count)
    else:
        print("循环正常执行完了")
    print("-------end-------")

    返回结果如下:

    loop  1
    loop  2
    终止循环
    -------end-------

    总结经验:

    不用非要从语义理解记忆,将while...else作为一组语句,正常语法执行完上面的while循环就执行下面的else语句,while循环被break终止就不执行下面的语句

    3.for循环

    参考:http://www.runoob.com/python/python-for-loop.html

    3.1.for循环语法

    Python的for循环用于遍历任何序列中的对象,如列表或字符串

    for iterating_var in sequence:
       statements(s)

    流程图:

    3.2.for循环实例

    # 实例1:打印0到10之间的奇数

    方法1:for循环加if判断,比较复杂

    for i in range(10):
        if i % 2 == 1:
            print(i)

    方法2:步长,简单高效

    for i in range(0,10,1):
        print("loop:",i)

    # 实例2:打印0到10之间的偶数,隔2个打印:02468

    for i in range(0,10,2):
        print("loop:",i)

    # 实例3:从0打印到10之间的,隔3个打印:0369

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

    # 实例4:猜数字,只能猜3次,猜对就退出,猜不对就退出

    num = 26
    for i in range(3):
        guess_num = int(input("Please input your num:"))
        if guess_num == num:
            print("yes,you got it!")
            break
        elif guess_num > num:
            print("please guess smaller...")
        else:
            print("please guess bigger...")
    else:           
        print("You have tried too many times")

    只要上面的for循环正常执行完毕,没被打断,就会执行else的语句
    如果遇到break被打断则不走else的,因为break下面的代码不执行
    遇到continue后else的代码是会执行的

    # 练习:写一个登录程序,连续输错3次用户名或密码则退出。

    _user = input("username:")
    _passwd = input("password:")
    for i in range(3):
        i_user = input("input username:")
        i_passwd = input("input password:")
        if i_user == _user and i_passwd == _passwd:
            print("Welcome login %s" %_user)
            break
        else:
            print("Invalid username or passord!")

    -------------- 完毕,呵呵呵呵 ---------------

  • 相关阅读:
    hdu 3579 Hello Kiki (中国剩余定理)
    hdu 1573 X问题 (非互质的中国剩余定理)
    poj 2891 Strange Way to Express Integers (非互质的中国剩余定理)
    查看cache中消耗性能的语句
    sqlserver2008 R2中查找未使用过的索引
    【转】如何新建索引:高开销的缺失索引
    查看sqlserver 2008中性能低下的语句
    经典
    符合条件的记录有则修改没有则添加的小优化技巧
    测试分区表,以及在现有表上新建分区方案,以及把分区表变为普通表测试代码!!
  • 原文地址:https://www.cnblogs.com/tssc/p/9432853.html
Copyright © 2020-2023  润新知