18. 循环语句while,for语句的详解

news2024/9/24 17:14:35

python 中的循环语句只有 for 和 while两种,没有do…while循环,这与c/c++是不同的。

1. while循环

(1) 语法格式

while <condition>...
# demo, 使用while循环累加1-100的和。
sum= 0
counter= 1
while counter <= 100:
    sum += counter
    counter += 1
print("sum is:> ", sum)	

在这里插入图片描述

2. while…else…

(1) 语法格式

while <condition>:
    # 循环主体
else:
    # 循环结束后执行的代码

(2) else语句的执行时机:当while条件不满足时执行

# demo
sum= 0
counter= 1
while counter <= 3:
    print('counter:> ', counter, '<=3')
    sum += counter
    counter += 1
else:
    print('counter:> ', counter, '大于3(不满足while循环条件, 此时执行else分支.)')

在这里插入图片描述

(3) 但是注意:如果while循环中执行了break子句,那么else语句是不会执行的

# 因为while循环中执行了break语句, 所以else分支不会被执行.
sum= 0
counter= 1
while counter <= 3:
    print('counter:> ', counter, '<=3')
    sum += counter
    if(counter == 3):
        break
    counter += 1
else:
    print('else分支将不会被执行.')

在这里插入图片描述

3. 简单语句组

类似 if 语句的语法,如果你的 while 循环体中只有一条语句,你可以将该语句与 while 写在同一行中

count=2
while(count==2): print('HelloWorld.')

4. for循环

for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
(1) 语法格式

for <variable> in <sequence>:
    ...
else:
    ...
# demo
hobby = ["eat", "sing", "dance", "play"]
for item in hobby:
    print(item, end=' ')

在这里插入图片描述

5. for…else…

在 python 中,for…else 语句用于在循环结束后执行一段代码。
(1) 语法格式

for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码

(2) else语句的执行时机当for条件不满足时执行

hobby = ["eat", "sing", "dance", "play"]
for item in hobby:
    print(item, end=' ')
else:
    print('')
    print('循环结束, 将执行else语句.')

在这里插入图片描述

(3) 但是注意:如果for循环中执行了break子句,那么else语句是不会执行的

# 因为for循环中执行了break语句, 所以else分支不会被执行. 
hobby = ["eat", "sing", "dance", "play"]
for item in hobby:
    print(item, end=' ')
    if(item == 'play'):
        break
else:
    print('')
    print('循环结束, 将执行else语句.

在这里插入图片描述

6. break关键字

(1) break 语句可以跳出 for 和 while 的循环体,直接导致整个循环结束
break关键字一般使用在if条件分支当中。

# 当count为4时, 直接执行break语句, 导致while循环直接结束(for循环亦如此, 不再赘述).
count= 1
while count <= 5:
    print("count is:>", count, "  count <= 3")
    count+=1
    if(count == 4):
        break

在这里插入图片描述
(2) break关键字只会使得其所在的那一层循环退出
假如存在一个双重for循环,并且在内循环之中使用了break关键字,那当如何?
:如果执行了内循环中的break语句,那么只会使得内循环直接结束,外循环不受影响。


for item in ['1', '2', '3', '4']:
    for it in ['first', 'second', 'third', 'fourth']:
        print(f'{item}-{it}', end=' ')
    print('')

在这里插入图片描述


接下来改变一下代码,在内循环中增加break关键字。

# 很明显, item=‘3’时, 将执行break语句, 
# 此时直接跳出内循环(结束内循环), 接着执行内循环外的语句print(''),
# 再接下来继续执行外循环,,,
for item in ['1', '2', '3', '4']:
    for it in ['first', 'second', 'third', 'fourth']:
        if(item == '3'):
            break
        print(f'{item}-{it}', end=' ')
    print('')

在这里插入图片描述

7. continue关键字

continue仅仅是用来结束本次循环当执行完continue语句时,那么直接结束本次循环,其后面的语句都不会被执行。接着进行下一次循环。
continue关键字一般使用在if条件分支当中。

# 当value为偶数时, 执行continue语句, 结束本次循环, 后面的HelloWorld...语句不会被执行.
for value in [1,2,3,4]:
    if(value % 2 == 0):
        continue
    else:
        print('value is odd ', value)
    print('HelloWorld...')

在这里插入图片描述

8. pass 语句

pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句

for item in ['1', '2', '3', '4']:
    if(int(item)==2):
        print('Ok.')
        pass
        pass

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 23种设计模式(4.创建者模式-建造者模式)

代码分析 结构图 代码 public class Product {//产品类,多个部件构成List <String> parts new ArrayList<>();public void Add(String part){parts.add(part);}public void show(){System.out.println("creat parts");for(String part:parts){System…

第十届蓝桥杯省赛 C++ B/C组 - 等差数列

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;等差数列 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家…

STL分析(九 适配器)

容器适配器&#xff1a;stack&#xff0c;queue stack和queue内含一个deque 函数适配器 binder2nd绑定第二参数 调用的过程中&#xff0c;算法count_if函数读取了迭代器头尾指针后&#xff0c;读取第三个参数为functor object即仿函数。因此在其参数为bind2nd(less< int&g…

LeetCode220123_140、117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL。初始状态下&#xff0c;所有 next 指针都被设置为 NULL。进阶…

双指针思想,c语言

问题导入 对一个给定的自然数M&#xff0c;求出所有的连续的自然数段&#xff0c;这些连续的自然数段中的全部数之和为M。 例如&#xff1a;1998 1999 2000 2001 2002 10000&#xff0c;所以从1998到2002的一个自然数段为M 10000的一个解。 输入格式 第一行&#xff0…

JQuery总结(三)

jQuery 事件 on可以同时绑定多个事件&#xff0c;并且动态添加的元素也会自动添加事件 自动触发事件&#xff1a; 案例1&#xff1a; <style>div{width: 100px;height: 200px;background-color: violet;transition: all .5s;}.current{width: 200px;height: 100px;ba…

ARP渗透与攻防(三)之流量分析

ARP攻击-流量分析 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 系列文章 1.环境准备 1.kali作为攻击机 2.win10作为靶机 IP地址&#xff1a;192.168.110.11 3.网关 IP地址&#xff1a;192.168.110.1 2.kali数据包转发 出于安全考虑&#xff0c;Linux系统默…

使用Py6S计算瑞利反射率教程

1、前言那么&#xff0c;首先&#xff0c;什么是瑞利反射率&#xff1f; 好吧&#xff0c;这是由大气中的瑞利散射引起的反射率&#xff08;在大气层顶部测量&#xff09;。 这是大气中气体分子对光的波长依赖性散射——这是光穿过大气时不可避免的结果。所以&#xff0c;关于如…

【2022年度总结与2023展望】---22年故事不长,且听我来讲

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f4e3;系列专栏&#xff1a;故事 文章目录前言一、高考前及高考后的暑假二、大一上的生活2.1 感受校园美景2.2 进入ACM实验室2.3 比赛和比赛经历三、那些帮助过我的人…

AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x

今天我们尝试一下在AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x。 GraalVM Enterprise 22是包含新功能的最新版本&#xff0c;但不是Long-Term-Support (LTS) 版本。 注意&#xff1a;下载Oracle GraalVM Enterprise Edition需要有Oracle账户&#xff0c;如果没…

六、pyhon操作mysql篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 下载pymysql 2. 新建数据库 3. mysql服务器版本查询 4. 执行非查询性质的SQL 5. 执行查询性质的sql ​​​​​​​6. 执行新增sql 1. 下载pymysql 右下角点击版本 选择解释器设…

基于Markdown文件的个人wiki

节后第一更&#xff0c;老苏祝您兔年大吉&#xff0c;幸福安康&#xff0c;事事顺心&#xff01; 什么是 wikmd &#xff1f; wikmd 是一个基于文件的 wiki&#xff0c;旨在简化。这些文档完全用 Markdown 编写&#xff0c;使用 pandoc 将 Markdown 文件转换为 html5。 &#…

WPF__Viewport3D 学习记录

1、相机的摆放位置和姿态 Position 是指定照相机的位置&#xff0c;注意Z轴的坐标&#xff0c;如果Z轴值大于模型的Z轴值&#xff0c;那么镜头就在物体前面&#xff0c;反之在物体后面。因此&#xff0c;你可以设置 LookDirection 来调整相机的方向&#xff0c;Position是相机的…

NodeJS 之模块化

NodeJS 之模块化参考描述模块化优点分类加载模块作用域优点自定义模块modulemodule.exportsexports 与 module.exports示例示例一示例二示例三建议CommonJS规范CommonJS参考 项目参考搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述操作系统Windows 10 专业版NodeJS18.13.0 模…

MU-MIMO是什么

欢迎来到东用知识小课堂&#xff01;1.什么是MIMOMIMO&#xff1a;Multiple-Intput Multiple-Output,即多入多出系统&#xff0c;这里的入和出是相对于发射天线和接受天线构成的天线系统来讲。通常的通信系统是单发单收&#xff0c;也就是SISO&#xff1a;Single-Input Single-…

【Bp2Lua】蓝图定义 Struct 和 Enum

【Bp2Lua】蓝图定义 Struct 和 Enum 背景 Enum Struct 结论 enum 可以保持不动&#xff0c;使用枚举值注释&#xff1b;如果C特别需要访问 enum&#xff0c;可以 C 化struct 必须 C 化 坑 首先&#xff0c;从字段访问都有字段名的坑&#xff0c;名字可以有空格&#xff0c…

maven-3-java调用python程序

【Java】使用Java调用Python的四种方法 fastjson的使用——JSON字符串、JSON对象、Java对象的互转 使用idea给Java程序打jar包&#xff08;超简单 超详细&#xff09; 1 环境准备 (1)新建Maven类型的项目&#xff0c;D:\processPython。 右键src/main/java&#xff0c;创建ja…

基于深度学习的文本分类6大算法-原理、结构、论文、源码打包分享

导读&#xff1a;文本分类是NLP领域一项基础工作&#xff0c;在工业界拥有大量且丰富的应用场景。传统的文本分类需要依赖很多词法、句法相关的human-extracted feature&#xff0c;自2012年深度学习技术快速发展之后&#xff0c;尤其是循环神经网络RNN、卷积神经网络CNN在NLP领…

【Leetcode面试常见题目题解】8. 合并两个有序链表

前言 本文是LC第21题&#xff1a;合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 提示&#xff1a; 两个链表的节点数目范围是 [0, 50] -100 < Node.val < 100 l1 和 l2 均按 非递减顺…

产品设计-基础控件-信息反馈控件

产品设计-基础控件-信息反馈控件1.1 吐司提示1.2 对话框1.3 气泡卡片1.4 动作面板和弹出层1.4.1 动作面板1.4.2 弹出层1.5 进度条和加载状态1.5.1进度条1.5.2 加载状态1.1 吐司提示 用户输入信息后&#xff0c;一个好的产品设计会给予用户明确的信息反馈&#xff0c;例如&…