• XX学Python·while


    while循环

    • while 循环的三个必要元素

      • while 关键字
      • 循环条件
      • 循环体
    • 构造循环要想的四件事

      • 初始状态
      • 循环条件
      • 要重复做的事情
      • 循环控制
    • 循环中的continue和break

      • continue:跳出本次循环,进入下一次循环(不会影响循环次数)

      • break:结束当前循环,后续循环次数不再执行

      • continue和break只能在循环体中使用

      • break 和continue 控制的是当前所在的循环结构

        # 吃苹果,第三个吃了半条虫子,不吃了,break
        i = 1
        while i <= 5:
            print(f"我吃了第{i}个苹果")
            if i == 3:
                print('吃了半条虫子,恶心')
                break
            i += 1
        # 吃苹果,第三有条虫子,扔了,吃第四个,continue
        i = 1
        while i <= 5:
            if i == 3:
                print('这个有虫子,不吃')
                i += 1
                continue # 在continue前要添加变量的自增
            print(f"我吃了{i}个苹果")
            i += 1
        # 写法二:可以先进行自增,再进行i的调用,这样就不用担心continue的问题了
        i = 0
        while i < 5:
            i += 1
            if i == 3:
                print('这个有虫子,不吃')
                continue
            print(f"我吃了{i}个苹果")
        

    死循环

    # 死循环:循环条件永远满足,可以持续循环的代码
    # 死循环不是bug,可以利用。循环内部有很多方法可以跳出循环,如break
    # 升级版猜拳游戏:一方达到3分就退出游戏。
    
    # 普通循环版本
    player_score = 0
    computer_score = 0
    while player_score < 3 and computer_score < 3:
        player = int(input("请输入您要出的拳型:(0石头,1剪刀,2布)"))
        import random
        computer = random.randint(0, 2)
        result = player - computer
        if result == -1 or result == 2:
            player_score += 1
            print('玩家获胜')
        elif result == 0:
            print('平局')
        else:
            computer_score += 1
            print('电脑获胜')
        print(f'玩家和电脑的比分为:{player_score}:{computer_score}')
    # 死循环版本
    player_score = 0
    computer_score = 0
    while True:
        player = int(input("请输入您要出的拳型:(0石头,1剪刀,2布)"))
        import random
        computer = random.randint(0, 2)
        result = player - computer
        if result == -1 or result == 2:
            player_score += 1
            print('玩家获胜')
        elif result == 0:
            print('平局')
        else:
            computer_score += 1
            print('电脑获胜')
        print(f'玩家和电脑的比分为:{player_score}:{computer_score}')
        if player_score >= 3:
            print('玩家最终获胜')
            break
        if computer_score >= 3:
            print("电脑最终获胜")
            break
    

    循环嵌套

    # 在循环嵌套中,外层循环执行一次,内层循环全部执行完成
    # 需求:一组训练:跑步四圈,做深蹲10分钟。要做3组。
    i = 1  # 做3组的初始状态
    while i <= 3:  # 做3组训练后退出循环
        print(f'第{i}组训练开始')
        j = 1  # 跑圈初始状态
        while j <= 4:  # 跑4圈后退出循环
            print(f'跑了{j}圈')
            j += 1  # 内层循环自增变量
        print('做了10分钟深蹲')
        i += 1  # 外层循环自增变量
    
    # 循环嵌套中,外层循环的break和continue会影响内层循环,但内层的不会影响外层
    
    • 练习

      # 打印一行*
      # i = 1
      # while i <= 5:
      #     print('*', end=' ')
      #     i += 1
      # 打印6行矩形
      j = 1
      while j <= 6:
          i = 1
          while i <= 5:
              print('*', end=' ')
              i += 1
          print()  #为了换行
          j += 1
      # 结论:外层循环控制的是行数, 内层循环控制的是列数
      
      # 需求:打印三角形
      """
      *
      * *
      * * *
      * * * *
      * * * * *
      """
      # 外层循环5行,i<=5
      # 内层循环:第一行1颗*,第二行2颗*,...,第i行i颗*。所以循环的i次,即j<=i.
      i = 1  
      while i <= 5:
          j = 1
          while j <= i:
              print('*', end=' ')
              j += 1
          print()
          i += 1
      
      # 打印倒立的直角三角
      i = 1
      while i <= 5:
          j = 1
          while j <= 6-i:
              print('*', end=' ')
              j += 1
          print()
          i += 1
      
      # 需求:打印九九乘法表
      """
      1*1=1
      1*2=2 2*2=4
      1*3=3 2*3=6 3*3=9
      """
      # 先打印一个9行9列的三角形,再把*的内容换成算式,
      # 九九乘法表中,公式规则:列 * 行 = 值
      i = 1
      while i <= 9:
          j = 1
          while j <= i:
              print(f'{j}*{i}={j*i}', end='\t')
              j += 1
          print()
          i += 1
      
      # 打印等腰三角形
      i = 1
      while i <= 5:   # 外层循环控制行数
          j = 1
          while j <= 5-i:
              print(' ', end='')  # 内层第一个循环控制空格的数量
              j += 1
          k = 1
          while k <= 2*i-1:
              print('*', end='')  #内层第二个循环控制*的数量
              k += 1
          print()
          i += 1
      
      # 过7游戏
      # 1-100,获取个位数字:i%10==7,十位数字:i//10==7
      i = 1
      while i <= 100:
          if i % 7 == 0 or i % 10 == 7 or i // 10 == 7:
              print('ha')
          else:
              print(i)
          i += 1
      # 1-1000,个位:i%10==7,十位:i%100//10==7(如175),百位i//100==7
      
  • 相关阅读:
    更换电脑后,maven工程无法编译,错误提示:Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6
    Python Selenium下拉列表元素定位
    Python Selenium简单的窗口切换
    python测试报告
    python调用xlrd&xlsxwirter
    selenium-python PageObject设计模式
    python词典的基本操作
    python链接mysql数据库
    python冒泡写法
    python调用各个数据库模块
  • 原文地址:https://www.cnblogs.com/portb/p/16754709.html
Copyright © 2020-2023  润新知