当前位置: 首页 > news >正文

6.5 python while 循环

6.5 while 循环

控制流指的是控制程序的执行流程。
Python控制流有三种结构:顺序结构分支结构循环结构
python中循环结构有2中:while循环for循环

在这里插入图片描述

6.5.1 while循环概念

while 循环的定义:当…时候,就执行某段代码。
while 循环作用:用它的条件来控制循环的执行次数。
当给定的条件为真时,执行循环体。
当给定的条件为假时,结束循环。

6.5.2 while循环语法

体验代码

# 定义一个变量a 
a = 0

# 条件判断
while a < 5:
    # 循环体
    print(a)
    a = a+1
print('循环结束!')

【终端输出】

0
1
2
3
4
循环结束!

观察上述代码,while 循环语句包含了五个要素:
① 关键字 while
② 条件表达式
③ 英文冒号:
④ 缩进四个空格
⑤ 循环体

在这里插入图片描述

6.5.3 while循环执行流程

1.上述代码中的条件表达式为a<5
2.循环体有2个句代码要执行:首先是输出a,然后是执行a+1后重新给a赋值。

我们来梳理代码的执行流程
第1行代码a=0定义了变量a=0。
第2行代码while a < 5:程序识别出关键字while时,就明白这是一个while循环,就会判断条件a < 5是否成立。
条件成立时,程序会执行 while 循环内的循环体,就是第3行、第4行代码。
第3行代码,输出a的值。此时 a 依然是 0,所以终端会输出数字0。
第4行代码,a加上了1,即 0 + 1,所以a的值变为1。

循环体执行完成后,第1轮循环结束。
经过本次循环,终端输出数字 0,a 的值从 0 变为了 1。

此时程序又回到了第2行while a < 5,执行条件判断,条件成立继续执行循环体,条件不成立时则程序结束。

上述代码中while 循环判断了6次,输出和加法赋值各执行了5次。
第1次循环:
a = 0:当a<5时,先输出a=0,然后重新赋值:a=a+1=0+1=1,此时a=1;
第2次循环:
a = 1:当a<5时,先输出a=1,然后重新赋值:a=a+1=1+1=2,此时a=2;
第3次循环:
a = 2:当a<5时,先输出a=2,然后重新赋值:a=a+1=2+1=3,此时a=3;
第4次循环:
a = 3:当a<5时,先输出a=3,然后重新赋值:a=a+1=3+1=4,此时a=4;
第5次循环:
a = 4:当a<5时,先输出a=4,然后重新赋值:a=a+1=4+1=5,此时a=5;
第6次循环:
a = 5,a 不满足条件a < 5,因此不能执行while下方的循环体,跳过循环体,执行print(‘循环结束!’)。

在while 循环中,程序首先判断条件表达式是否为真,为真则执行循环体;程序通常会一直循环到条件不成立的时候,此时就会结束循环,如果后面有代码继续往下运行。

6.5.4 if和while的区别

if和while语法基本一致,都有条件表达式。
区别是:
if判断1次,执行1次代码。
while可判断n+1次,执行n次代码。

上述代码中while 循环判断了6次,输出和加法赋值各做了5次。
while循环是当条件不满足时,才结束循环,因此判断总比执行多一次。

6.5.5 需要缩进的语法

截止目前我们共学了2个需要4个空格缩进的,第一个是if语句,第二是while循环。
在这里插入图片描述

在这里插入图片描述

在写循环语句的时候,特别注意print的位置,print语句是否缩进决定了循环体是否输出内容。
在这里插入图片描述

备注:文中部分图片来源于《风变编程》。

相关文章:

  • 6.6 Python for 循环
  • 批量读取文件夹下所有excel文件里的内容,放入列表 把所有不管行列名如何excel合并成一个大的excel 批量读取excel,批量合并excel
  • 6.7 continue 和 break 语句
  • 批量多个excel合并成一个大的excel
  • 7.1 python 自定义函数的创建及调用
  • 7.2 Python return 语句
  • 6_ggplot可视化addmodule得到的炎症评分自己选择颜色 自定义更改显示的颜色 seurat得到的单细胞数据
  • 8.1 Python 类 对象 属性 方法
  • 8.2 类的实例化 调用属性 调用方法
  • 8.3 python __init__()方法
  • 多个h5文件整理到一个文件夹下面,不改变名字
  • 9.1 Python 绝对路径与相对路径
  • 3_使用seurat sct方法中的reference based处理大数据超过100000个细胞 science advance
  • 9.2 Python库与模块
  • seurat对象处理
  • 网络传输文件的问题
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • ComponentOne 2017 V2版本正式发布
  • create-react-app做的留言板
  • CSS 三角实现
  •  D - 粉碎叛乱F - 其他起义
  • Fundebug计费标准解释:事件数是如何定义的?
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript服务器推送技术之 WebSocket
  • leetcode讲解--894. All Possible Full Binary Trees
  • SOFAMosn配置模型
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 翻译:Hystrix - How To Use
  • 工作中总结前端开发流程--vue项目
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 运行时添加log4j2的appender
  • 2017年360最后一道编程题
  • 第二十章:异步和文件I/O.(二十三)
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #每日一题合集#牛客JZ23-JZ33
  • (+4)2.2UML建模图
  • (2)STL算法之元素计数
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Git) gitignore基础使用
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .describe() python_Python-Win32com-Excel
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 依赖注入和配置系统
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET命名规范和开发约定
  • @RequestBody的使用
  • @SpringBootApplication 包含的三个注解及其含义