if 今天发工资: 先还信用卡的钱 if 有剩余: 又可以happy了,O(∩_∩)O哈哈~ else: 噢,no。。。还的等30天 else: 盼着发工资
正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支
在 Python
中,if 语句 就是用来进行判断的,格式如下:
if 要判断的条件: 条件成立时,要做的事情 ……
注意:代码的缩进为一个
tab
键,或者 4 个空格 —— 建议使用空格
- 在 Python 开发中,Tab 和空格不要混用!
我们可以把整个 if 语句看成一个完整的代码块
思考
在使用 if
判断时,只能做到满足条件时要做的事情。那如果需要在 不满足条件的时候,做某些事情,该如何做呢?
答案
else
,格式如下:
if 要判断的条件: 条件成立时,要做的事情 …… else: 条件不成立时,要做的事情 ……
注意:
if
和 else
语句以及各自的缩进部分共同是一个 完整的代码块and
条件1 and 条件2
True
False
条件 1 | 条件 2 | 结果 |
---|---|---|
成立 | 成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
不成立 | 不成立 | 不成立 |
or
条件1 or 条件2
True
False
条件 1 | 条件 2 | 结果 |
---|---|---|
成立 | 成立 | 成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
不成立 | 不成立 | 不成立 |
not
not 条件
条件 | 结果 |
---|---|
成立 | 不成立 |
不成立 | 成立 |
elif
if
可以 判断条件else
可以处理 条件不成立 的情况elif
if 条件1: 条件1满足执行的代码 …… elif 条件2: 条件2满足时,执行的代码 …… elif 条件3: 条件3满足时,执行的代码 …… else: 以上条件都不满足时,执行的代码 ……
if 条件1 and 条件2: 条件1满足 并且 条件2满足 执行的代码 ……
注意
elif
和 else
都必须和 if
联合使用,而不能单独使用if
、elif
和 else
以及各自缩进的代码,看成一个 完整的代码块if
的嵌套elif 的应用场景是:同时 判断 多个条件,所有的条件是 平级 的
if
进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套if 条件 1: 条件 1 满足执行的代码 …… if 条件 1 基础上的条件 2: 条件 2 满足时,执行的代码 …… # 条件 2 不满足的处理 else: 条件 2 不满足时,执行的代码 # 条件 1 不满足的处理 else: 条件1 不满足时,执行的代码 ……
while
循环基本使用循环的作用就是让 指定的代码 重复的执行
while
循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行
需求 —— 打印 5 遍 Hello Python
思考 —— 如果要求打印 100 遍怎么办?
while
语句基本语法初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件(计数器 + 1)
注意:
while
语句以及缩进部分是一个 完整的代码块注意:循环结束后,之前定义的计数器条件的数值是依旧存在的
由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序无法终止!
常见的计数方法有两种,可以分别称为:
1
开始)—— 更符合人类的习惯0
开始)—— 几乎所有的程序语言都选择从 0 开始计数因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始
在程序开发中,通常会遇到 利用循环 重复计算 的需求
遇到这种需求,可以:
while
上方定义一个变量,用于 存放最终计算结果需求
# 计算 0 ~ 100 之间所有数字的累计求和结果 # 0. 定义最终结果的变量 result = 0 # 1. 定义一个整数的变量记录循环的次数 i = 0 # 2. 开始循环 while i <= 100: print(i) # 每一次循环,都让 result 这个变量和 i 这个计数器相加 result += i # 处理计数器 i += 1 print("0~100之间的数字求和结果 = %d" % result)
开发步骤
# 0. 最终结果 result = 0 # 1. 计数器 i = 0 # 2. 开始循环 while i <= 100: # 判断偶数 if i % 2 == 0: print(i) result += i # 处理计数器 i += 1 print("0~100之间偶数求和结果 = %d" % result)
break
和continue
是专门在循环中使用的关键字
break
某一条件满足时,退出循环,不再执行后续重复的代码continue
某一条件满足时,不执行后续重复的代码
break
和continue
只针对 当前所在循环 有效
break
退出循环i = 0 while i < 10: # break 某一条件满足时,退出循环,不再执行后续重复的代码 # i == 3 if i == 3: break print(i) i += 1 print("over")
break
只针对当前所在循环有效
continue
i = 0 while i < 10: # 当 i == 7 时,不希望执行需要重复执行的代码 if i == 7: # 在使用 continue 之前,同样应该修改计数器 # 否则会出现死循环 i += 1 continue # 重复执行的代码 print(i) i += 1
continue
时,条件处理部分的代码,需要特别注意,不小心会出现 死循环
continue
只针对当前所在循环有效
while
循环嵌套while
嵌套就是:while
里面还有 while
while 条件 1: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... while 条件 2: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件 2 处理条件 1
字符串中的转义字符
\t
在控制台输出一个 制表符,协助在输出文本时 垂直方向 保持对齐\n
在控制台输出一个 换行符制表符 的功能是在不使用表格的情况下在 垂直方向 按列对齐文本
转义字符 | 描述 |
---|---|
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
除了 while 循环,Python 中还有一种常用的循环结构——for 循环
Python 中的 for 循环是通过 for … in … 语句实现循环的,强调的是对什么 序列 做重复操作。计算机一遇到 for,便会 依次
访问序列中的元素,赋值给变量 i,执行一次循环体。当序列中的元素都访问完一遍,循环自然而然也就停止啦。而这种沿着某条路线,依次对序列中每个元素均做 一次 访问的过程,就叫做 遍历
。
for 循环的执行过程:
图上的代码实际上就是在遍历列表 [0, 1, 2]。每次访问时,Python 把访问到的数字赋值给变量 i,执行 print(i + 1) 语句。所以整段代码的作用就是逐行打印出 1、2、3。
for 后面的变量是可以自由取名的。遍历一些纯数字序列时,我们常常取名为 i。不过更多情况下,我们应该尽量取一个易于阅读、有含义的变量名。
在 Python 中,序列
指的是 有序
元素的集合。我们能使用 len() 函数获取它的长度,也能够用 索引 获取指定位置的元素。
列表
和 元组
,还有最开始接触的 字符串
,都是 Python 中很常用的序列(range()函数返回的也是一个序列)。而 整数
、浮点数
和 布尔值
,它们都是一个个孤立的存在,自然也就不是序列了。
遍历元组和遍历列表很相似,Python 会从元组第一个元素开始,依次访问到最后一个元素。
遍历 字符串 时,Python 则会从左往右依次访问字符串里的字符。
range函数的用法:
range() 函数生成的是一串数字序列,可以使用 list() 函数,把它的返回值转换成列表再使用。其实,range() 函数的返回值可以直接索引,也能通过 len() 函数获取长度,是不折不扣的 序列。
Python3 range() 返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表,具体可查阅 Python3 range() 用法说明。
它可以把两个列表打包组合起来,这个函数返回一个zip对象,你直接打印是打印不出来的
例如:
ids = [1, 2, 3] names = ['派大星', '章鱼哥', '珊迪'] name_with_id = list(zip(ids, names)) print(name_with_id) # 输出:[(1, '派大星'), (2, '章鱼哥'), (3, '珊迪')]
打包后的结果 names_with_ids 实际上按顺序保存一个个形如 (编号, 名字) 的 元组。
zip的对象在遍历的时候是不用转化为list的,它自身就是序列可以遍历。
这种元组结构想要访问到里面的数据:
info = (1, '派大星') id, name = info print(id) # 输出:1 print(name) # 输出:派大星
这是 Python 中的特殊规则:用逗号 , 分隔开的多个变量,可以 按顺序
一次性获取 序列
中的元素。需要注意的是,序列里有几个元素,就要用多少个变量把它们一一取出来(你不能说取一半就不取了)。
所以对于按编号、名字顺序组合起来的数据 zip(ids, names),我们可以设置 id 和 name 这两个变量去遍历它,就像这样:
ids = [1, 2, 3] names = ['派大星', '章鱼哥', '珊迪'] # 遍历按编号、名字顺序组合起来的数据 for id, name in zip(ids, names): print(str(id) + '号:' + name) ''' 输出: 1号:派大星 2号:章鱼哥 3号:珊迪 '''
变量 id 在访问到列表 ids 中各个元素的同时,变量 name 也访问到了 names 中对应位置的元素。
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
返回的是一个enumerate对象
例如:
names = ['派大星', '章鱼哥', '珊迪'] # 为其标上序号,默认从 0 开始 names_with_id = list(enumerate(names)) print(names_with_id) # 输出:[(0, '派大星'), (1, '章鱼哥'), (2, '珊迪')]
可以看到,这些序号默认是从 0 开始的,我们也可以传入参数,指定序号开始数字,让结果更符合我们的习惯。
# 指定序号从 1 开始 names_with_id = list(enumerate(names, 1)) print(names_with_id) # 输出:[(1, '派大星'), (2, '章鱼哥'), (3, '珊迪')]
它的返回值也类似一个个元组,跟zip()函数的返回值一样,所以也可以同zip那样遍历。