【Python】顺序、条件、循环语句

news2024/11/29 12:34:35

文章目录

  • 一. 顺序语句
  • 二. 条件语句
    • 1. 什么是条件语句
    • 2. 缩进和代码块
    • 3. 空语句 pass
    • 4. 练习
  • 三. 循环语句
    • 1. while 循环
    • 2. for 循环

一. 顺序语句

默认情况下,Python 的代码执行顺序,是从上到下依次执行的:
在这里插入图片描述
执行结果一定为 “123”,而不会出现 “321” 或者 “132” 等。这种按照顺序执行的代码,我们称为 顺序语句。

这个顺序是很关键的。编程是一件明确无歧义的事情,安排好任务的顺序,计算机才能够正确的进行执行。

二. 条件语句

1. 什么是条件语句

条件语句能够表达 “如果 … 否则 …” 这样的语义,这构成了计算机中基础的 逻辑判定。

即条件语句,就是根据一个具体条件的成立于否,来决定接下来的逻辑走向。

语法格式

Python 中使用 if、elif、else 关键字表示条件语句:
在这里插入图片描述

注意:Python 中的条件语句写法,和很多编程语言不太一样,具体体现在以下三点:

  • if 后面的条件表达式,没有 ( ),使用 : 作为结尾来代替。
  • if / elif / else 命中条件后要执行的 “语句块”,使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示,而不是 { }
  • 对于多条件分支,不是写作 else if,而是 elif (合体了)

代码示例

示例:输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍。

choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")
if choice == '1':
    print("包子")
else:
    print("泡馍")

实际开发中,用户的输入,很有可能是出乎意料的!本来期望用户输入 1 或者 2,但是用户实际输入了3:
在这里插入图片描述

对于非法情况的判定,也是非常必要的!因为你永远不知道用户会如何操作:

choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")

if choice == '1':
    print("包子")
elif choice == '2':
    print("泡馍")
else:
    print("输入有误")

2. 缩进和代码块

代码块 指的是一组放在一起执行的代码。在 Python 中使用缩进表示代码块。不同级别的缩进,程序的执行效果是不同的:

在这里插入图片描述

Python 是基于缩进的方式表示代码块的,带来的好处就是强制要求程序猿要写明确的缩进,以明确代码之间的相对关系。如果缩进书写的不对,则直接报错:
在这里插入图片描述

PS:在 C++/Java 中,对于代码缩进是没有强制要求的,缩进具体怎么写都不影响代码的编译运行结果。如果缩进没有很好的统一风格来写,也就是对于可读性比较影响。

此外,Python 中的代码块还可以嵌套,看下面这个例子:
在这里插入图片描述

同时,嵌套带来的坏处就是:如果缩进层次比较多,就容易分不清楚某个语句属于哪个缩进层级:

在这里插入图片描述

因此,就有了 “写 Python 需要自备游标卡尺” 这个梗:

因为 Python 是通过缩进来区分代码块的(而不是 { } 或者是其他符号),而不是像其他程序语言,缩进仅仅为了可读性。导致打印出来的 Python 代码(比如书),需要肉眼看缩进,有时候遇上翻页,或者代码逻辑比较复杂,缩进比较多时,就需要用尺子来区分代码块了,如果看书不带游标卡尺的话,你就不知道缩进了几层,当然是个夸张的说法。

我们在实际开发中还是要尽量避免写出这种嵌套关系非常复杂的代码的,这样子可读性太差了!

3. 空语句 pass

看如下代码:

if a != '1':
    # 我这儿啥都不做
else:
    print('hello')

编译后报错。虽然希望条件满足的时候啥都不做,但是因为 Python 对于语法格式,尤其是缩进和代码块的要求较严格,所以如果啥都不写(只写个注释)是不符合语法要求的。
在这里插入图片描述

这种情况下,可以使用空语句(pass)进行占位:

if a != '1':
    pass
else:
    print('hello')

其中 pass 表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。

很多地方都是如此,虽然我们啥都不想做。但是也得写个 pass 空语句来占位。

4. 练习

(1)输入一个整数,判定是否是奇数

num = int(input('请输入一个整数:'))

if num % 2 == 1:
    print('奇数')
else:
    print('偶数')

补充说明:

  • Python 中取模运算得到的结果都是正整数:
    在这里插入图片描述

  • int() 函数的转换默认是按照 十进制 的方式来解析的。其参数必须是十进制的整数字符串,如果不符合,在运行时会直接报错:
    在这里插入图片描述

(2)输入一个整数, 判定是正整数还是负整数

整数包括:正整数、负整数和0

num = int(input('请输入一个整数:'))

if num > 0:
    print('正整数')
elif num < 0:
    print('负整数')
else:
    print('为0')

(3)判定年份是否是闰年

满足以下两个条件之一的年份就是闰年:

  • 能被 4 整除,但是不能被 100 整除
  • 能被 400 整除
year = int(input("请输入年份:"))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年")

三. 循环语句

有些操作是需要反复执行的,这种就需要使用循环。

1. while 循环

基本语法格式:

while 条件:
	循环体
  • 条件成立,则执行循环体,完事后再去判断条件
  • 条件不成立,则循环结束,退出循环

注意:
在这里插入图片描述

代码示例

1、打印 1-10 的整数

num = 1
while num <= 10:
    print(num)
    num += 1

2、计算 1-100 的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(f'sum = {sum}')

3、计算 5 的阶乘

ret = 1
num = 1
while num <= 5:
    ret *= num
    num += 1
print(f'5! = {ret}')

4、求 1! + 2! + 3! + 4! + 5!

# 从 1 的阶乘开始算
i = 1
# ret 表示最终的加和结果
ret = 0
while i <= 5:
	# 先计算出当前 i 的阶乘是多少,算出后往 ret 上加
    j = 1
    partSum = 1
    while j <= i:
        partSum *= j
        j += 1
    ret += partSum
    i += 1
    
print(f'1! + 2! + 3! + 4! + 5! = {ret}')

2. for 循环

基本语法格式:

for 循环变量 in 可迭代对象:
	循环体

补充说明:

  • python 的 for 和其他语言不同,没有 “初始化语句”、“循环条件判定语句” 和 “循环变量更新语句”,而是更加简单地去遍历取值,相当于 C++ 的 范围for
    在这里插入图片描述

  • 所谓的 “可迭代对象”,指的是 “内部包含多个元素,并能够一个一个把元素取出来的特殊变量”。

代码示例

1、打印 1-10

# 使用 range 函数,能够生成一个可迭代对象
# 生成的范围是 [1, 11),也就是 [1, 10]
for num in range(1, 11):
    print(num)

可迭代对象,是一种特殊的变量,其内部包含了很多的值。

这里重点介绍一下 range()。它是 Python 的一个内建函数,起到的效果就是得到一个 “可迭代对象”,这个可迭代对象中就包含了一系列的整数,比如 range(begin, end) 对应整数区间 [begin, end),是一个前闭后开的区间。

2、打印 2, 4, 6, 8, 10

range 还提供了第三个参数用来表示步长,其默认值是 1。通过 range 的第三个参数,可以指定迭代时候的 “步长”,也就是控制一次让循环变量加几。

for num in range(2, 11, 2):
    print(num)

3、打印 10-1

range 的步长也可以设定成负数。

for num in range(10, 0, -1):
    print(num)

continue 和 break 语句

  • continue:立即结束当前这次循环,进入下一次循环
    在这里插入图片描述
  • break:立即结束整个循环
    在这里插入图片描述

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

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

相关文章

【工具门户】Backstage配置使用PostgreSQL(三)

先决条件 If the database is not hosted on the same server as the Backstage app, the PostgreSQL port needs to be accessible (the default is 5432 or 5433) PostgreSQL数据库默认端口为5432或5433,如果数据库与Backstage应用不在同一台机器上,需开放PostgreSQL端口…

MyBatis框架一二级缓存含代码演示

目录 1.什么是缓存? 2. Mybatis的一级缓存 2.1实验一: 2.2实验二: 3.Mybatis的二级缓存 3.1 二级缓存需要配置才可以使用: 3.2 实验开始&#xff01;&#xff01; 4.总结 1.什么是缓存? 缓存就是数据交换的缓冲区&#xff08;称作Cache&#xff09;&#xff0c;当某一…

学习Python中turtle模块的基本用法(2:基本绘图函数测试)

个人感觉turtle模块中的绘图函数是按人手拿着画笔一笔一画地画图的思路定义的&#xff0c;这与C#中的GDI函数、html5中canvas的绘图函数及Tkinter中Canvas的绘图函数的定义思路存在差异&#xff0c;但也能完成后面绝大部分的绘图功能&#xff08;目前看到的turtle文章及帮助文档…

安装OpenGL

提示错误信息&#xff1a; (base) C:\Users\Tina\PycharmProjects\FunnyToys-main>conda install opengl Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting…

python 栈空间不足异常 Process finished with exit code: -1073741571

问题现象 在pycharm使用debug模式调试代码时&#xff0c;异常退出&#xff0c;且错误码为-1073741571。除了错误码外&#xff0c;并没有看到其它报错。 分析 查阅资料&#xff1a; Process finished with exit code -1073741571 (0xC00000FD) when trying to implement ab…

AxureRP9的新特性介绍和技巧分享

AxureRP自去年8月第一个测试版本发布以来&#xff0c;已经一年多了&#xff0c;官方版本已经发布了近半年&#xff0c;但这个版本的用户声誉是褒贬不一的。许多用户反馈了他们对新版本的喜欢和肯定&#xff0c;但一些老用户仍然不愿意接受它&#xff0c;甚至保持抵制。 根据我…

【Hack The Box】linux练习-- Tabby

HTB 学习笔记 【Hack The Box】linux练习-- Tabby &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月22日&#x1f334; &#x1f36…

【数据结构】基础:二叉树

【数据结构】基础&#xff1a;二叉树基础 摘要&#xff1a;本文将会介绍二叉树的基础内容&#xff0c;首先引入树的概念&#xff0c;了解树的基本概念与性质&#xff0c;再对二叉树的概念和性质进行分析&#xff0c;最后对其方法进行实现&#xff0c;最重要的是理解对于二叉树方…

世界65个国家贸易开放度数据 2005-2019年

一、数据介绍 数据名称&#xff1a;UNtrade数据库 数据年份&#xff1a;2005-2019年 数据范围&#xff1a;世界65个国家 数据来源&#xff1a;各地方统计局 部分数据如下&#xff1a; 二、参考文献 用途&#xff1a;研究人民币实际汇率与贸易差额之间的关系等。 [1]卢向…

R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究

数据集中的Usenet公告板包括新汽车&#xff0c;体育和密码学等主题。最近我们被客户要求撰写关于主题建模的研究报告&#xff0c;包括一些图形和统计输出。我们对20个Usenet公告板的20,000条消息进行分析。 相关视频&#xff1a;文本挖掘&#xff1a;主题模型&#xff08;LDA&a…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.1 记录系统访客独立IP访问次数案例介绍

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.1 记录系统访客独立IP访问次数案例介绍2.1.1 介绍2.1.2 需求…

SpringCloud 组件Gateway服务网关【断言工厂过滤器工厂】

目录 1&#xff1a;断言工厂 2&#xff1a;过滤器工厂 2.1&#xff1a;路由过滤器的种类 2.2&#xff1a;请求头过滤器 2.3&#xff1a;默认过滤器 2.4&#xff1a;总结 1&#xff1a;断言工厂 路由断言工厂Route Predicate Factory 路由配置包括&#xff1a; 1. 路由…

C++_串口编程_官方示例:监视通信事件

这是微软官方的一个例子&#xff0c;这个例子中&#xff0c;如果不做修改&#xff0c;那么他是可以异步运行的&#xff0c;会出现一个错误&#xff1a;官方也说了一下&#xff0c;但是不太好懂&#xff0c;我拷贝过来放在这里&#xff0c;作为参考。 如果无法立即完成重叠的操作…

1_MyBatis入门

原生JDBC实现CURD的问题 1 编码繁琐 2 需要我们自己将结果集映射成对象 3 性能不太好 连接池 缓存 4 SQL语句和java代码的耦合度特别高 5 … … MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code&#xff0c;且改名为…

python学习笔记(10)

目录 第八章 函数 1.模块化程序设计&#xff08;模块化---封装、复用、可替代&#xff09; 2.定义函数 3.函数调用 4.return语句 5.函数参数 6.变量作用域 7.函数的递归调用 8.匿名函数 9.迭代器 10.生成器 11.装饰器 第八章 函数 1.模块化程序设计&#xff08;…

【线性表】—不带头单向非循环链表的增删查改

小菜坤日常上传gitee代码&#xff1a;https://gitee.com/qi-dunyan&#xff08;所有的原码都放在了我上面的gitee仓库里&#xff09; 数据结构知识点存放在专栏【数据结构】后续会持续更新 ❤❤❤ 个人简介&#xff1a;双一流非科班的一名小白&#xff0c;期待与各位大佬一起努…

dns网络服务器未响应是什么原因(如果各自方法都尝试后无法使用,请尝试重启猫)

事件起因&#xff1a;周六晚上&#xff0c;看法国对丹麦世界杯&#xff0c;突然网页浏览器无法工作。 1.然后尝试修改dns路由修改为114.114.114.114&#xff0c;又还原system32/driver/hosts仍然无法使用 2.查看是否有浏览器代理&#xff0c;查询无 3.查看是否有可疑进程&…

游戏开发24课 cocoscreator scrollview优化

分享一个 ScrollView 优化组件 增加一个 在线演示地址 显得高大上一点 image.png32762116 263 KB 目前支持的功能 水平/垂直滑动 可变尺寸动态更新 平滑滚动到底部 Grid 正序排列、倒序排列 无限循环滚动 单向、双向 下拉刷新 &#xff08;只是这么叫 实际上就是两种类型…

深度学习第四课——卷积神经网络(week 2)

目录 二、深度卷积网路 2.1 经典网络结构 2.1.1 LeNet - 5 2.1.2 AlexNet 2.1.3 VGG - 16 2.2 残差网络&#xff08;ResNets - Residual Networks&#xff09; 2.3 残差网络为什么有用 2.4 网络中的网络及11卷积 2.5 Inception网络 2.5.1 介绍 2.5.2 应用 2.6 使用…

24. [Python GUI] PyQt5中的模型与视图框架-表格部件QTableWidget

PyQt5的表格部件QTableWidget QTableWidget 类继承自 QTableView&#xff0c;该类是一个由 Qt 实现的标准的表格部件&#xff0c;该类的数据项由 QTableWidgetItem 类管理。 当前单元格(或当前项目)与当前索引或当前选择是相同的&#xff0c;即可以同时选择多个单元格&#x…