• 【Python学习笔记】第二章循环:while循环,for循环,break和continue语句,死循环,循环的嵌套



    CSDN话题挑战赛第2期
    参赛话题: 学习笔记

    一、while循环

    1.基本格式:

    i=0
    while i<5:
    print(‘老婆大人,我错了’)
    i=i+1

    2.计算1-100的累加和:

    结果:5050

    i=1
    result=0
    while i<=100:
        result+=i
        i=i+1
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.输出10以内所有奇数:

    i=1
    while i<=10:
        if i%2!=0:
            print("%d是奇数"%i)
        i=i+1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.输出1-100的偶数累加和与奇数累乘积:

    结果:2550和654729075

    # 输出1-100的偶数累加和
    i=1
    sum=0
    while i<=100:
        if i%2==0:
            sum+=i
        i=i+1
    print(sum)
    # 输出1-100的奇数累乘积
    i=1
    sum=1
    while i<=20:
        if i%2!=0:
            sum*=i
        i=i+1
    print(sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    二、break语句和continue语句,break用于跳出/结束当前循环,continue用于跳出当前循环的本次循环

    案例1.吃苹果,吃到第三个吃出半条虫,无心再吃:

    i=1
    while i<=5:
        print(F'我吃了{i}个苹果')
        if i==3:
            break
        i=i+1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结果:

    我吃了1个苹果 我吃了2个苹果 我吃了3个苹果

    案例2.吃苹果,吃到第三个吃出半条虫,丢掉第三个继续吃:

    i=0
    while i<5:
        i = i + 1
        print(F'我吃了{i}个苹果')
        if i==3:
            print('这个苹果有虫子')
            continue
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果:

    我吃了1个苹果 我吃了2个苹果 我吃了3个苹果 这个苹果有虫子 我吃了4个苹果 我吃了5个苹果

    三、死循环

    1.基本格式:

    当条件一直成立无法从循环中退出时我们称之为死循环,可以利用死循环做很多事情,比如让循环一直进行直到玩家不想继续时可以改变条件内容使其退出,可以参考下面的案例,升级版猜拳游戏

    2.练习代码:

    t=0
    p1=p2=0
    while True and t==0:
        player = int(input('请输入一个拳形(0 石头,1 剪刀,2 布):'))
        import random  # 导入随机模块
        computer = random.randint(0, 2)  # 随机生成[0,2]之间的一个数
        print(F'电脑出的是:{computer}')
        result = player - computer
        if result == -1 or result == 2:
            print('玩家获胜')
            p1=p1+1
        elif result == 0:
            print('平局')
        else:
            print('电脑获胜')
            p2=p2+1
        print(F'当前比分:[玩家{p1}:电脑{p2}]')
        if p1>=3 or p2>=3:
            if p1>=3:
                print('玩家获得最终胜利')
            else:
                print('电脑获得最终胜利')
            break
        # t = int(input('请问是否继续游戏,是输入0,否输入1:'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    四、循环的嵌套

    1.题目:锻炼身体,跑步4圈+10分钟深蹲为1组,需要做3组训练

    分析:外层循环是1-3,内层循环为4圈+1深蹲

    2.练习代码:

    i=1
    while i<=3:
        print(f"第{i}组训练开始")
        j=1
        while j<=4:
            print(f"我跑了{j}圈")
            j=j+1
        print('10分钟深蹲结束')
        i+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    五、循环练习作业

    1.相亲猜测年龄问题:

    题目:相亲时,聊到年龄问题,女孩允许男孩尝试猜3次,3次都没猜对的话,就直接退出,猜对了打印恭喜猜对了并退出。

    代码:

    n=int(input('请输入女士的年龄:'))
    i=0
    while i<3:
        t = int(input('请猜测一下我的年龄:'))
        if t==n:
            print('恭喜你,猜对了!')
            break
        else:
            print('猜错了,你还有%d次机会'%(2-i))
            if t>n:
                print("小提示:猜大了")
            else:
                print("小提示:猜小了")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.农场养兔子问题:

    题目:在一个农场养了3只小白兔,每隔一年兔子的数量会翻涨到原来的2倍,那么在资源条件允许
    并且所有兔子生存的条件下,N年后,兔子的数量是多少?
    提示:N=1,有6只兔子,N=2,有12只兔子。以此类推…

    代码:

    n=int(input('请输入N的值:'))
    sum=3
    i=0
    while i<n:
        sum=sum*2
        i+=1
    print(sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    六、打印矩形,直角三角形,乘法口诀表

    1.打印一个5行5列的矩阵:

    i=0
    j=0
    while i<5:
        j=0
        while j<5:
            print("*",end=" ")
            j+=1
        print()
        i+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.打印一个9行9列的直角三角形:

    i=0
    j=0
    while i<9:
        j=0
        while j<=i:
            print("*",end=" ")
            j+=1
        print()
        i+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.打印乘法口诀:

    i=1
    j=1
    while i<=9:
        j=1
        while j<=i:
            print(F"{i}*{j}={i*j}",end=" ")
            j+=1
        print()
        i+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    七、for循环和range函数

    1.for循环:

    # 用于循环遍历将字符串中的字符全输出
    str1='Hello Python'
    for i in str1:
        print(i)
    
    • 1
    • 2
    • 3
    • 4

    2.range函数:

    # range是一个类,一般配合for循环使用,没办法直接输出
    for i in range(1,10,2): #range(起始值,结束值,步长),包含起始位置,不包含结束位置
        print(i)
    # 可使用list(range)来打印range中的所有元素
    print(list(range(0,5))) # [0, 1, 2, 3, 4] 步长省略时,默认为1
    # 如果起始位置是0则起始位置可以省略,但是省略起始位置时,步长也必须省略
    print(list(range(10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 从大到小的情况:步长为负数
    print(list(range(10,5,-1))) # [10, 9, 8, 7, 6]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    八、案例:用for循环实现用户登录

    1。题目:

    1.输入用户名和密码
    2.判断用户名和密码是否正确(username=‘admin’,password=‘admin888’)
    3.登录仅有三次机会,超过3次会报错

    分析:3次机会写成代码就是最多循环三次,当其中有一次成功时使用break语句提前退出

    2.答案:

    for i in range(0,3):
        username=input('请输入用户名:')
        password = input('请输入密码:')
        if username!='admin':
            print(f'用户名错误!你还有{2-i}次机会重新输入')
        elif password !='admin888':
            print(f'密码错误!你还有{2-i}次机会重新输入',)
        else:
            print('恭喜你!登录成功')
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    九、for循环的嵌套

    1.案例1:使用for循环输出9*9乘法表

    for i in range(1,10):
        for j in range(1,i+1):
            print(f'{i}*{j}={i*j}',end=' ')
        print()
        # 输出9*9乘法表
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.案例2:过7游戏

    # 需求:
    # 数数,1-100中凡是7和7的倍数,以及数字中带7的数,输出哈,否则输出数字
    
    for i in range(1,101):
        if (i-1) % 10 == 0: # 每10行换行一次
            print()
        a=i%10 # 个位
        b=i//10 # 十位
        # print(f'{i}的十位是{b}个位是{a}')
        if a==7 or b==7 or i%7==0:
            print('哈',end=' ')
            continue
        else:
            print(i,end=' ')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.案例3:输入一个字母查询是否在字符串中:

    a='withyou'
    char1=input('请输入一个字母:')
    t=0
    for i in a:
        if i==char1:
            print('找到了')
            t=1
            break
    if t==0:
        print('未找到此字母')
    # 或者这样:
    # len1=0
    # len1+=1
    # if len1==len(a):
    #     print('未找到此字母')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4.for循环与while循环转换:

    i=0
    while i<=100:
        if i==60:
            print('下载非法文件,已将你举报!下载中止')
            break
        print(f'下载进度:{i}%')
        i+=1
    else:
        print("下载完成")
    
    for i in range(0,101):
        print(f'下载进度{i}%')
        if i == 60:
            print('下载非法文件,已将你举报!下载中止')
            break
    else:
        print("下载完成")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    十、报数游戏

    1.题目:

    需求:
    大家从1开始报数,报到数字尾数是7或该数字是7的倍数时,跳过这个数字,不进行报数。
    所有同学都参与游戏后,游戏结束,例如:学生数量为50,游戏结束后,报数的同学数量为39

    解题思路:当报到个位数是7或者7的倍数时,使用continue跳过当前学生报数。

    2.解题代码:

    count=int(input('请输入有多少人参与本次报数游戏:'))
    sum1=0
    for i in range(1,count+1):
        a=i%10 # 个位
        if a==7 or i%7==0:
            continue
        else:
            print('报数:%d'%i)
            sum1+=1
    print('共有%d个人参与报数'%sum1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    感谢收看!此系列会持续更新,欢迎大家订阅本专栏(免费),有任何问题都可以发私信一起探讨。

  • 相关阅读:
    分析 Base64 编码和 URL 安全 Base64 编码
    leetcode:142. 环形链表 II
    C脚本实现Wincc单按钮启动/停止
    ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
    深度学习入门篇(一):环境搭建(PyTorch+Anaconda3+CUDA+PyCharm )
    debian 已安装命令找不到 解决方法
    期货开户公司底蕴深厚实力强大
    C++各种字符转换
    【MySql】mysql之MHA高可用配置及故障切换
    Java CAS基本原理
  • 原文地址:https://blog.csdn.net/lwj8819/article/details/127577589