判断语句
生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?……
考试成绩对人生的影响,不同的考试成绩对应着的结果,也就是不用的分支
判断的定义
- 如果 条件满足,才能做某件事情,
- 如果 条件不满足,就做另外一件事情,或者什么也不做
正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支
if 语句语法结构
- 标准if条件语句的语法 缩进:python代码的层级关系,一般加4个空格
如果表达式的值 非0 或者为布尔值 True,则代码组 if_suite 被执行;否则就去执行 else_suite
代码组是一个 python术语,它由一条或多条语句组成,表示一个子代码块
图例
只要表达式数字为 非零值 即为 True
空字符串、空列表的值均为 False
1 | [root@localhost day01]# vim demo01_if.py # demo01_if.py是文件名,可以修改 |
练习 1:判断合法用户
需求
- 提示用户输入用户名和密码
- 获得到相关信息后,将其保存在变量中
- 如果用户输的用户名为 bob,密码为 123456,则输出 Login successful,否则输出 Login incorrect
1 | [root@localhost day02]# vim login2.py # login2.py是文件名,可以修改 |
if 扩展语句
语法结构:
练习 2:编写判断成绩的程序
需求
如果成绩大于60分,输出“及格”
如果成绩大于70分,输出“良”
如果成绩大于80分,输出“好”
如果成绩大于90分,输出“优秀”
否则输出“你要努力了”
编写判断成绩的程序
1 | [root@localhost day02]# vim demo02_if.py # demo02_if.py是文件名,可以修改 |
练习 3:编写石头剪刀布小游戏
需求:
- 计算机随机出拳
- 玩家自己决定如何出拳
- 代码尽量简化
方法一:编写剪刀石头布小游戏
1 | [root@localhost day02]# vim test01_if.py # test01_if.py是文件名,可以修改 |
方法二:
1 | [root@localhost day02]# vim test02_if.py # test02_if.py是文件名,可以修改 |
while 循环详解
在程序开发中,一共有三种流程方式:
- 顺序 —— 从上向下,顺序执行代码
- 分支 —— 根据条件判断,决定执行代码的 分支
- 循环 —— 让 特定代码 重复 执行
循环概述
- 一组被重复执行的语句称之为 循环体,能否继续重复,决定循环的终止条件
- Python 中的循环中 while 循环和 for 循环
- 循环 次数未知 的情况下,建议采用 while 循环
- 循环 次数可以预知 的情况下,建议采用 for 循环
何时使用
- 减少重复性代码,提高代码效率
while 循环语法结构
- 循环的作用就是让 指定的代码 重复的执行
while
循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行
注意:
while
语句以及缩进部分是一个 完整的代码块
案例:打印 5 遍 Hello World
需求
- 打印 5 遍 Hello World
1 | [root@localhost day02]# vim demo03_while.py # demo03_while.py是文件名,可以修改 |
注意:循环结束后,之前定义的计数器条件的数值是依旧存在的
练习 1:完善石头剪刀布的游戏
需求:
- 实现循环结构,要求游戏三局两胜(一方赢两局,游戏就结束)
【优化】实现循环结构,要求游戏三局两胜
1 | [root@localhost day02]# vim test03_while.py # test03_while.py是文件名,可以修改 |
break、continue 和 else
break
和continue
是专门在循环中使用的关键字
break
某一条件满足时,退出循环,不再执行后续重复的代码continue
某一条件满足时,跳过当前循环,不执行 continue 后续重复的代码
break
和continue
只针对 当前所在循环 有效
break
- 在循环过程中,如果 某一个条件满足后,不 再希望 循环继续执行,可以使用
break
退出循环
1 | [root@localhost day02]# vim test03_while_break.py # test03_while_break.py是文件名,可以修改 |
break
只针对当前所在循环有效
图例
continue
- 当遇到 continue 语句时,程序会 跳过当前循环,并忽略剩余的语句,然后 回到循环的顶端
- 如果仍然满足循环条件,循环体内语句继续执行,否则退出循环
1 | [root@localhost day02]# vim test03_while_continue.py # test03_while_continue.py是文件名,可以修改 |
图例

else
python 中的 while 语句也支持 else 子句
else 子句只在循环完成后执行
break 语句也会跳过 else 块
练习 5:猜数字程序
需求
系统随机生成 100 以内的整数
要求用户猜生成的数字是多少
最多猜 5 次,猜对结束程序
如果5次全部猜错,则输出正确结果
1 | [root@localhost day02]# vim test04_while.py # test04_while.py是文件名,可以修改 |
for 循环详解
for 循环语法结构
1 | for 变量 in 可迭代对象: |
从购物过程理解 for 循环
购物车
我们都有在超市购物的经历,将一件一件的商品放进购物车:

我们如果把购物车比做一个容器,例如学习过的列表,元组,字典等数据结构,那么里面的商品就可以看成是一个个元素,而且购物车中的元素是有固定数量的。
扫码结账
当我们去超时收银台扫码结账的时候,店员会将购物车中的商品一件一件的取出,然后扫描二维码。注意这里的过程是拿一件,扫一件。
又因为购物车中商品数量是有限的,所以扫描商品的次数也是有限次。比如,购物车中有5件商品,那么最后就会扫描 5 次。

案例:扫描商品
1 | [root@localhost day02]# vim demo05_for.py # demo05_for.py是文件名,可以修改 |
从上述代码可以看出,购物车cart中有5件商品,所以for中的print逻辑执行了5次。for一般用于指定次数的循环逻辑中,一般情况下,循环次数未知采用while循环,循环次数已知,采用for循环。在for关键字后面跟的这个item变量,变量名是可以根据变量命名规则更改的。
案例:计算购物车商品总价
1 | [root@localhost day02]# vim demo05_for.py # demo05_for.py是文件名,可以修改 |
遍历以及迭代器
遍历
我们如果把店员将购物车商品一件一件取出进行扫码的过程,比喻成将某个容器中的元素一个个取出然后进行后续操作,这个过程就叫做遍历。
遍历不仅限于列表,还适用于元组,字典和字符串类型。
可迭代对象
概念:一个实现了__iter__方法的对象是可迭代对象,一个实现next方法的对象则是迭代器。
人话:现阶段我们学过的可迭代对象有 字符串,列表,元组,集合,字典,range(),并且能被 for 循环的都是可迭代对象。
案例:遍历字符串
1 | [root@localhost day02]# vim demo05_for.py # demo05_for.py是文件名,可以修改 |
for 循环特性
break、continue、else
关键字 | 作用 |
---|---|
break | 结束当前循环 |
continue | 跳出当次循环,继续执行下次循环 |
else | 循环正常结束(非 break 退出),执行 else 逻辑 |
案例:打印列表中元素,遇到小于0的元素停止打印
break 应用
1 | [root@localhost day02]# vim demo06_for_break.py # demo06_for_break.py是文件名,可以修改 |
图例说明:
案例:计算列表中所有大于0的数字的和
continue 应用
1 | [root@localhost day02]# vim demo06_for_continue.py # demo06_for_continue.py是文件名,可以修改 |
图例说明:
range 函数
range 函数是一个内建函数,它的返回值是一个半闭半开范围内的数字。for 循环常与range函数一起使用,range 函数为循环提供条件。
语法结构
案例
常规使用:
1 | [root@localhost day02]# python3 |
因为 range 函数的使用和切片比较类似,所以同样具有切片的使用特性:
1 | [root@localhost day02]# python3 |
与 for 循环一起使用
可以把 range 函数当成购物车,购物车中的商品是一个个范围内的数字,要想拿出里面的数字,就得遍历,所以 range 可以和 for 连用,可以控制循环次数。
案例:控制for循环的次数
1 | [root@localhost day02]# vim demo07_for.py # demo07_for.py是文件名,可以修改 |
如果直接打印 “hello world”:
1 | [root@localhost day02]# vim demo07_for.py # demo07_for.py是文件名,可以修改 |
这里的变量 i 只是为了语法,在案例中没有实际意义,不写变量在语法层面会报错,这里的 range 只为控制循环次数。
列表解析
它是一个非常有用、简单、灵活的工具,可以用来动态地创建列表,注意:它只是一个简写方式,不是新知识点
语法结构
案例:生成一个元素为 1~10 的列表
for 循环方式:语法相对复杂,但是好理解
1 | [root@localhost day02]# vim demo08_for.py # demo08_for.py是文件名,可以修改 |
列表解析式
1 | [root@localhost day02]# vim demo08_for.py # demo08_for.py是文件名,可以修改 |
列表解析式相对于for循环,只是变了一种结构,核心还是for循环,所以我们只需要关心语法即可。
练习:将刚才的 list01 列表的基础上对其中的每个元素加 1
1 | [root@localhost day02]# vim demo08_for.py # demo08_for.py是文件名,可以修改 |
综合练习
练习:斐波那契数列
- 斐波那契数列就是某一个数,总是前两个数之和,比如 0,1,1,2,3,5,8
- 使用for循环和range函数编写一个程序,计算有10个数字的斐波那契数列
- 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列
版本一
1 | [root@localhost day02]# vim test05_for.py # test05_for.py是文件名,可以修改 |
版本二:编写可以指定长度的斐波那契数列程序
1 | [root@localhost day02]# vim test05_for.py # test05_for.py是文件名,可以修改 |