python编程语言之流程控制

news2024/11/29 9:47:58

代码块

以冒号作为开始,用缩进来划分作用域,代表一个整体,是一个代码块。所谓的作用域,就是程序运行过程中变量的可调用范围。

一个文件(模块)也可以称为一个代码块。

print(11)
print(22)
print(33)


if True:
	print(1)
	print(2)
	print(3)
	
if False :
	print(4)
	print(5)
print(6)


'''
代码块的格式
一个tab缩进 和 4个空格 看起来距离一样,但不是同一个缩进,要么全都是用tab,要么全都是用4个空格
PEP8规范中,建议大家使用4个空格长度,不要使用tab缩进
'''
if True:
	print(7)
	print(8)
	
	
# golang,C/C++,java ...
if(True){
print(9)
}

流程控制

程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。

其流程控制方式有

  • 顺序结构
  • 分支结构
  • 循环结构

这里最简单最常用的就是顺序结构,即语句从上至下逐一执行。

在这里插入图片描述

print("Are You OK?")
print("OK")
print("not OK") # 从上到下依次执行

分支语句

在程序中如果有部分代码不希望执行的话,就可以使用分支语句来完成。

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。

单分支语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B49f5oJU-1689670447332)(assets/image-20211216155050847-16396410524811.png)]

语法:

'''
if 表达式:
    代码块
'''    

user = input("用户名>>")
pwd = input("密码>>")
if user == "root" and pwd == "123":  # 返回一个布尔值
    print("登录成功")  # 强烈建议使用四个缩进

print("程序结束")

说明:

1、“表达式”可以是一个单一的值或者复杂语句,形式不限,但解释器最后会通过bool获取一个true或者false的布尔值

2、“代码块”由:与具由相同缩进标识的若干条语句组成(一般是四个缩进)。

双分支语句

双分支语句顾名思义,二条分支二选一执行!

语法格式:

'''
if 表达式:
    代码块 1
else:
    代码块 2
'''
user = input("用户名>>")
pwd = input("密码>>")

if user == "root" and pwd == "123":  # 返回一个布尔值
    print("登录成功")  # 强烈建议使用四个缩进
    print("祝贺你")
else:
    print("登录失败")
    print("不好意思")

在这里插入图片描述

多分支语句

多分支即从比双分支更多的分支选择一支执行,也叫多项巢状分支。语法格式:

'''
if 表达式 1:
    代码块 1
elif 表达式 2:
    代码块 2
elif 表达式 3:
    代码块 3
...# 其它elif语句
else:
    代码块 n
'''  


score = input("请输入您的成绩>>")  # "100"
# 当成绩大于90的时候显示优秀,否则显示一般
# 将数字字符串,比如"100",转换成一个整型数字的时候,需要int转换
score = int(score)  # 100

if score > 100 or score < 0:
    print("您的输入有误!")
elif score > 90:
    print("成绩优秀")
elif score > 70:  # else if
    print("成绩良好")
elif score > 60:
    print("成绩及格")
else:
    print("成绩不及格")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zbfcaY7s-1689670447334)(assets/image-20210318173151614.png)]

嵌套分支语句

score = input("请输入您的成绩>>")  # "100"

if score.isdigit():
    score = int(score)  # 100
    if score > 100 or score < 0:
        print("您的输入有误!")
    elif score > 90:
        print("成绩优秀")
    elif score > 70:  # else if
        print("成绩良好")
    elif score > 60:
        print("成绩及格")
    else:
        print("成绩不及格")
else:
    print("请输入一个数字")

循环语句

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。

Python语言中的循环语句支持 while循环(条件循环)和for循环(遍历循环)。

while循环

语法:

'''  
while 表达式:
    循环体
'''    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9bukjCHS-1689670447335)(assets/image-20210319125002230.png)]

无限循环

# 案例1
while True:
    print("OK")  # 无限循环打印OK,这样使用没有什么意义

# 案例2
while True:
    score = input("请输入您的成绩>>")  # "100"

    if score.isdigit():
        score = int(score)  # 100
        if score > 100 or score < 0:
            print("您的输入有误!")
        elif score > 90:
            print("成绩优秀")
        elif score > 70:  # else if
            print("成绩良好")
        elif score > 60:
            print("成绩及格")
        else:
            print("成绩不及格")
    else:
        print("请输入一个数字")

限定次数循环

循环打印十遍"hello world”

count = 0  # 初始化语句
while count < 10: # 条件判断
    print("hello world")
    count+=1  # 步进语句
print("end")

for循环

for 循环的语法格式如下:

'''  
for 迭代变量 in 字符串|列表|元组|字典|集合:
  代码块
'''   

格式中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值;代码块指的是具有相同缩进格式的多行代码(和 while 一样),由于和循环结构联用,因此代码块又称为循环体。

for i in "hello world":
    print(i)
    
for name in ["张三",'李四',"王五"]:
    print(name)
    
for i in range(10): # [1,2,3,4,5,6,7,8,9] range函数: range(start,end,step)
    print(i)

退出循环

如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。

  • break

当 break 关键字用于 for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足某个条件时便跳出循环,继续执行循环语句下面的代码。

  • continue

不同于break退出整个循环,continue指的是退出当次循环。

while 1:
    num = int(input("num>>"))
    for i in range(1, num + 1):
        # if i > 100:
        if i == 6:
            # break
            continue
        print(i)

配合debug模式理解

嵌套循环

在一个循环体语句中又包含另一个循环语句,称为循环嵌套

  • 独立嵌套

在控制台上打印一个如下图所示的正方形

*****
*****
*****
*****
*****
for i in range(5):
    for j in range(5):
        print("*",end="")
    print("")
  • 关联嵌套

打印一个如下图所示的三角形

*
**
***
****
*****
for i in range(5):
    for j in range(i+1):
        print("*",end="")
    print("")

打印一个如下图所示的图案

★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆
★★★★★★★★★★
☆☆☆☆☆☆☆☆☆☆

pass

pass是表示占位,不做任何处理,是python代码块中常见的关键字。

作用是在开发中针对部分语句如果暂时没有缩进代码的情况下避免报错。

以下是错误示例:

if True:

print("能打印,则表示没有报错!")

以下是正确示例:

if True
    pass
print("能打印,则表示没有报错!")

练习

# 1. 计算1-100的累加积

# 2. 猜数游戏
'''
程序随机内置一个位于一定范围内的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜测结果:太大了、太小了或者猜对了,直到用户猜对结果或者猜测次数用完导致失败。
设定一个理想数字比如:66,
让用户三次机会猜数字,如果比66大,则显示猜测的结果大了;
如果比66小,则显示猜测的结果小了;
只有等于66,显示猜测结果正确,退出循环。
最多三次都没有猜测正确,退出循环,并显示‘都没猜对,继续努力’。
'''

# 3. 用户登陆(三次输错机会)且每次输错误时显示剩余错误次数

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

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

相关文章

001-Spring简要原理分析-草稿

Bean查找流程 根据类型找找到多个根据名称找 Map<被代理类&#xff0c; List<方法>> 事务 Config 方法代理

使用mybatis-plus分页查询数据

这里使用springboot整合mybatis-plus&#xff0c;需要有springboot的基础才用的顺畅&#xff0c;下面直接开始&#xff0c; 首先导入mybatis-plus依赖&#xff0c; <!-- 使用mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifa…

基于.net6的WPF程序使用SignalR进行通信

之前写的SignalR通信&#xff0c;是基于.net6api&#xff0c;BS和CS进行通信的。 .net6API使用SignalRvue3聊天WPF聊天_signalr wpf_故里2130的博客-CSDN博客 今天写一篇关于CS客户端的SignalR通信&#xff0c;后台服务使用.net6api 。其实和之前写的差不多&#xff0c;主要在…

怎样查看Oracle的sid和service_name

用sysdba身份登录 比如 conn / as sysdba 匿名管理员登陆执行 select name form V$database; 或是执行select * from V$database;不过执行第二个显示的内容太多了不好找自己想要的结果你也可以先用desc V$database;语句查看一下V$database都有什么字段然后选择自己想要的字段…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第二十九天 29/50【数据流中的中位数( 大根堆 + 小根堆 )】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

百度卫星地图切换个性化地图

1.切换 if (mapType.value 1) {mapInstance.setMapType(BMAP_SATELLITE_MAP);//卫星地图} else if (mapType.value 2) {mapInstance.setMapType(BMAP_NORMAL_MAP);//标准地图mapInstance.setMapStyleV2({ styleJson: darkJson });//个性化样式}2.不带路况的卫星地图 mapIn…

Haystack:建立端到端的NLP应用程序的工具箱

Haystack是一个端到端的自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;可以使用语言模型、Transformer模型、向量搜索等功能来构建NLP应用程序。无论您想进行问题回答、答案生成、语义文档搜索&#xff0c;还是构建能够进行复杂决策和查询解决的工具&#xff0c;都可…

php伪协议(文件包含-强行读取文件)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 php伪协议 伪协议详情 php伪协议 文件包含直接读取的是文件&#xff0c;而不是文件源码&#xff0c;所以要想办法读取源码方法。 那么就要涉及到 PHP 伪协议 ph…

Vulkan 同步

前言 在前面的文章中&#xff0c;我们讲解了Vulkan的多线程设计理念&#xff0c;分析了其底层的机制。我们知道在Vulkan的设计中&#xff0c;尽量避免资源的同步竞争&#xff0c;但是在某些复杂场景和多线程优化过程中难免会遇到资源竞争的问题&#xff0c;这时候就需要同步机…

Redis实战案例19-Redis解决主从一致性问题

主节点&#xff08;Master&#xff09;“写操作”&#xff1a; 接收并响应客户端的读写请求。持久化数据到磁盘&#xff08;根据配置可以选择使用RDB快照或者AOF日志&#xff09;。将自己的写操作同步给所有的从节点。处理发布/订阅&#xff08;Pub/Sub&#xff09;模式中的发…

shell脚本备份数据库

首先是在本地windows环境下尝试备份数据库 打开mysql的bin目录&#xff0c;然后在地址栏cmd&#xff0c;进入cmd界面&#xff0c;输入mysqldump命令&#xff0c;-u输入用户名&#xff0c;-p输入密码 还有数据库名称&#xff0c;以及后面要保存到的位置 mysqldump -uroot -p tes…

数据标准化助力生产企业产能提升

毫无疑问&#xff0c;多产线、多工厂的协同管理成为集团构建核心竞争力的关键因素。企业内部供应链、研制链的业务贯通与协作需要基于统一的数据标准、统一的集成规范开展&#xff0c;数据标准化将成为企业数字化转型的有效赋能手段。 一、客户诉求 近年来&#xff0c;随着国…

OpenAI科学家Jason Wei关于人工智能的回复

问&#xff1a;你的人工智能之路是如何开始的&#xff1f; 答&#xff1a;虽然你们知道我的工作可能是从 2022 年开始的&#xff0c;但我从 2017 年就开始从事人工智能工作了。在达特茅斯大学读本科时&#xff0c;我原本想成为华尔街的一名银行家&#xff0c;这是我父母那一代…

ORAN上行帧和下行帧的定时关系

在UE天线端口处&#xff0c;相同帧号的UL无线帧&#xff0c;相对于DL无线帧有定时提前偏移。N_TA offset是应用于UE的默认定时偏移参数&#xff0c;除非根据3GPP 36.211或38.211中规定&#xff0c;在小区中配置了另一个值。n-ta-offset是M平面参数&#xff0c;用于控制在O-RU天…

软件设置开机自启

文章目录 一、使用系统自带工具设置开机启动1.winR键打开运行窗口2.输入"shell:startup"→点击确定3.将要开机自启的软件快捷方式放到启动目录下就行 一、使用系统自带工具设置开机启动 1.winR键打开运行窗口 2.输入"shell:startup"→点击确定 3.将要开机…

FastEdit ⚡:在10秒内编辑大型语言模型

概述&#xff1a; 这个仓库旨在通过一个单一的命令&#xff0c;有效地将新鲜且定制化的知识注入到大型语言模型中&#xff0c;以辅助开发人员的工作。 支持的模型&#xff1a;○ GPT-J (6B)○ LLaMA (7B/13B)○ BLOOM (7.1B)○ Falcon (7B)○ Baichuan (7B/13B)○ InternLM (7…

【es】部署后打不开访问页面

具体报错&#xff1a; [2023-07-18T00:55:28,203][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [demo] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress/127.0.0.1:9200, remoteAddress/127.0.0.1:5529…

企业应如何面对数字化时代?

企业要想有效面对数字时代&#xff0c;就需要适应和拥抱数字技术带来的机遇和挑战。以下是企业需要考虑的一些关键策略&#xff1a; 拥抱数字化转型&#xff1a;数字化转型涉及重新思考和重新构想业务流程、产品和服务以利用数字技术。这可能包括自动化流程、采用云计算、实施数…

如何学习Java集合框架? - 易智编译EaseEditing

要学习Java集合框架相关的技术和知识&#xff0c;可以按照以下步骤进行&#xff1a; 掌握Java基础知识&#xff1a; 在学习集合框架之前&#xff0c;确保你已经具备良好的Java编程基础&#xff0c;包括语法、面向对象编程&#xff08;OOP&#xff09;原理和常用的核心类库等。…

HIVE SQL几种不同的分组排序函数比较

--数据建表 drop table if exists db.tb_name; create table if not exists db.tb_name ( name string,class string,score string ) ; insert overwrite table db.tb_name values ("a","1","100") ,("b","1","99"…