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
posted @   PORTB  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示