• 零基础入门学习Python(9)--了不起的分支和循环3


    前言

    本节继续介绍分支和循环

    知识点

    while循环

    Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码。不同的是只要条件为True,while循环就会一直重复执行那一段代码,我们把这段代码称之为循环体。直到条件为False时,才会停止。

    当我们在这个循环体设置一些语句,以修改条件,那么我们这个while循环运行到指定位置时,就会退出。
    语法:

    while 条件:
        循环体

    例如:
    我们条件设置为 i<10, 循环体设置为i += 1,那么每执行一次循环体,条件i就会加1,直到i=10时,条件为假,才会退出循环。

    for循环

    虽然说Python是由C语言编写而来的,但是它的for循环跟C语言的for循环不太一样,Python的for循环显得更为智能和强大!
    主要是体现在Python的for循环可以自动的调用迭代器,自动捕获一些异常,并结束循环
    语法

    for 目标 in 表达式:
        循环体
    
    目标:每一次迭代的变量
    表达式:一个列表或者元祖

    实验:

    >>> for i in a:
        print(i,end=' ')
    
    
    F i s h C 
    
    
    >>> for each in member:
        print(each,len(each))
    
    
    小甲鱼 3
    黑夜 2
    小布丁 3
    迷途 2
    怡静 2

    range()

    for循环的小伙伴

    语法range([start],stop[,step=1])
    这个BIF有三个参数,其中用中括号括起来的两个表示这两个参数是可选的
    step=1:第三个参数的值默认为1,表示每次递增为1
    range这个BIF的作用是生成一个从start参数的值开始到stop参数值结束的数字序列

    实验:

    >>> range(5)
    range(0, 5)
    
    >>> list(range(5))
    [0, 1, 2, 3, 4]
    >>> for i in range(5):
        print(i)
    
    
    0
    1
    2
    3
    4
    >>> for i in range(2,9):
        print(i)
    
    
    2
    3
    4
    5
    6
    7
    8
    >>> for i in range(1,10,2):
        print(i)
    
    
    1
    3
    5
    7
    9

    两个关键的语句break,continue

    break作用终止当前循环,跳出循环体

    例子:

    bingo = '小甲鱼是帅哥'
    answer = input('请输入小甲鱼最想听的一句话:')
    
    while True:
        if answer == bingo:
            break
        answer = input('抱歉,错了,请重新输入(答案正确才能退出游戏):')
    
    print('哎哟,帅哦~')
    print('您真是小甲鱼肚子里的蛔虫啊^_^')
    
    运行结果:
    
    请输入小甲鱼最想听的一句话:sha
    抱歉,错了,请重新输入(答案正确才能退出游戏):bi
    抱歉,错了,请重新输入(答案正确才能退出游戏):nidaye
    抱歉,错了,请重新输入(答案正确才能退出游戏):小甲鱼是帅哥
    哎哟,帅哦~
    您真是小甲鱼肚子里的蛔虫啊^_^
    

    continue作用终止本轮循环并开始下一轮循环,在开始下一轮循环之前,会先测试循环条件,只有循环条件为True时,它才会开始下一轮循环。否则,退出循环。

    例子:

    for i in range(10):
        if i%2 != 0:
            print(i)
            continue
        i += 2
        print(i)
    
    运行结果:
    2
    1
    4
    3
    6
    5
    8
    7
    10
    9

    分析:
    range(10) = [0,1,2,3,4,5,6,7,8,9]
    当i为0时,if条件为假,直接运行i += 2,打印2
    当i为1时,if条件为真,打印1,终止本轮循环,开始下一轮循环
    当i为2时,if条件为假,直接运行i += 2,打印 4
    当i为3时,if条件为真,打印3,终止本轮循环,开始下一轮循环
    当i为4时,if条件为假,直接运行i += 2,打印6
    当i为5时,if条件为真,打印5,终止本轮循环,开始下一轮循环
    当i为6时,if条件为假,直接运行i += 2,打印8
    当i为7时,if条件为真,打印7,终止本轮循环,开始下一轮循环
    当i为8时,if条件为假,直接运行i += 2,打印 10
    当i为9时,if条件为真,打印9,终止本轮循环,开始下一轮循环

    课后习题

    • 目测以下程序会打印什么?
    while True:
        while True:
            break
            print(1)
        print(2)
        break
    print(3)
    
    运行结果:
    2,3
    • 以下程序有没有办法大幅提升效率(仍然使用while):
    i = 0
    string = 'ILoveFishC.com'
    while i < len(string):
        print(i)
        i += 1
    -------
    while True:
        for i in range( len('ILoveFishC.com')):
            print(i)
        break
    --------
    i = 0
    string = 'ILoveFishC.com'
    length = len(string)
    while i < length:
        print(i)
        i += 1  
    ---------
    这段代码之所以效率低,是因为每次循环都需要调用len()函数。
    
    • 设计一个验证密码程序,用户只有三次机会输入错误,如果用户输入的内容中包含*则不计算在内。
    password = 'fishC'
    count = 3
    while count:
        passwd = input('请输入密码:')
        if passwd == password:
            print('密码正确,进入程序...')
            break
        elif '*' in passwd:
            print('密码中不能含有"*"号!您还有',count,'次机会~',end=' ')
            continue
        else:
            print('密码输入错误!您还有',count-1,'次机会~',end=' ')
        count -= 1
    
    运行结果:
    
    请输入密码:*
    密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:*
    密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:*
    密码中不能含有"*"号!您还有 3 次机会~ 请输入密码:k
    密码输入错误!您还有 2 次机会~ 请输入密码:k
    密码输入错误!您还有 1 次机会~ 请输入密码:*
    密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:*
    密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:*
    密码中不能含有"*"号!您还有 1 次机会~ 请输入密码:fishC
    密码正确,进入程序...
    


    • 编写一个程序,求100~999之间的所有水仙花数。

    如果一个3位数等于各位数字的立方和,则称这个数为水仙花数,例如:153 = 1^3 + 5^3 + 3^3
    for x in range(0,10):
        for y in range(0,10):
            for z in range(0,10):
                sum = x*100 + y*10 +z
                if x**3 + y**3 + z **3 == sum and sum>=100 and sum<1000:
                    print(sum)
    
    ---------
    for i in range(100, 1000):
        sum = 0
        temp = i
        while temp:
            sum = sum + (temp%10) ** 3
            temp //= 10         # 注意这里要使用地板除哦~
        if sum == i:
            print(i)       
    
    运行结果:
    ================== RESTART: C:/Users/ThinkPad/Desktop/1.py ==================
    153
    370
    371
    407

    解释:
    这里写图片描述

  • 相关阅读:
    chrome安装插件
    如何在JIRA中有效使用关注和@提及 我正在关注的问题 提及我的问题 在仪表板上显示
    SQL Server中查找包含某个文本的存储过程 SQL 查找存储过程中出现过的文字怎么查询 查询整个数据库中出现的文本 sql 全局搜索
    Postman中添加真实请求(Chrome Networks中的全部请求,含https)copy as har
    SCOPE_IDENTITY 和 @@IDENTITY
    The underlying connection was closed: An unexpected error occurred on a rece
    mybatis中参数为list集合时使用 mybatis in查询
    如何在Mybatis的xml文件调用java类的方法
    Java中List, Integer[], int[]的相互转换
    ASP .NET Core HTTP Error 502.5 – Process Failure
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514702.html
Copyright © 2020-2023  润新知