想学习更多Python知识,请关注微信公众号 莫同学vv
Python使用 if 语句提供分支支持,提供了 while、for-in 循环,也提供了 break 和 continue 来控制程序的循环结构。
顺序结构
程序总是从上向下依次执行,排在前 面的代码先执行,排在后面的代码后执行。
if 分支结构
Python的 if 语句有如下三种形式:
第一种形式:
if expresson :
statements ...
第二种形式 :
if expression :
statements...
else :
statements ...
第三种形式:
if expression :
statements ...
elif expression :
statements ...
..//可以有零条或多条 elif 语句
else :
statement ...
如果 if 条件为“真”,程序就会执行 if 条件后面的多条语句,否则就会依次判断 elif 条件,如果 elif 条件为“真”,程序就会执行 elif 条件后面的多条语句,如果前面所有条件都为“假”,程序就会执行 else 后的代码块(如果有)。
案例:
input_age = input("请输入您的年龄 :")
age = int(input_age)
if age > 18 :
# 只有当 age > 18 时,下面整体缩进的代码块才会执行
# 整体缩进的语句是一个整体,要么一起执行,要么一起不执行
print("你已经成年了")
代码不要忘记缩进
案例:
input_age = input("请输入您的年龄 :")
age = int(input_age)
if age > 18 :
# 只有当 age > 18 时,下面整体缩进的代码块才会执行
# 如果下面的代码块不缩进,会报错
print("你已经成年了")
案例:
# 定义变量 c,并为其赋值
a = 10
if a > 5 :
# 如果a > 5,则执行下面的条件执行体,只有 a- = 1 一行代码为条件执行体
a -= 1
# 下面是一行普通代码,因为没有缩进,不属于条件执行体,所以总是执行
print("a 大于 4")
案例:
# 定义变量 c,并为其赋值
a = 10
if a > 5 :
# 如果a > 5,则执行下面的条件执行体,只有 a- = 1 一行代码为条件执行体
a -= 1
# 下面是一行普通代码,因为没有缩进,不属于条件执行体,所以总是执行
print("a 大于 4")
# 此处的 else 将没有 if 语句,因此编译出错
else :
# 否则,执行下面的条件执行体,只有一行代码作为代码块
print ("a 不大于 4")
不要随意缩进
位于同一个代码块中的所有语句必须保持相同的缩进,既不能多,也不能少 。
案例:
input_age = input("请输入您的年龄 :")
age = int(input_age)
if age > 18 :
# 缩进了4个空格
print("你已经成年了")
# 缩进了5个空格
print("你已经成年了----")
案例:
input_age = input("请输入您的年龄 :")
age = int(input_age)
if age > 18 :
# 缩进了4个空格
print("你已经成年了")
# 缩进了3个空格
print("你已经成年了----")
不要遗忘冒号
如果程序遗忘了冒号,那么 Python 解释器就无法识别代码块的开始点。
案例:
input_age = input("请输入您的年龄 :")
age = int(input_age)
# 演示漏掉 if 后的冒号
if age > 18
print("你已经成年了")
if 条件的类型
除了 False 本身,各种代表“空”的 None、空字符串、空元组、空列表、空字典都会被当成 False处理。
案例:
# 定义空字符串
s = ""
if s :
print('s 不是空字符串')
else :
print('s 是空字符串')
# 定义空列表
mylist = []
if mylist :
print('mylist 不是空列表')
else :
print('mylist是空列表')
# 定义空字典
mydict = {}
if mydict :
print('mydict 不是空字典')
else :
print('mydict 是空字典')
注意:在使用 if else 分支语句时, 一定要先处理包含范围史小的情形。
pass 语句
有时候程序需要占一个位、放一条语句,但又不希望这条语句做任何事情,此时就可通过 pass 语句来实现,通过使用 pass 语句,可以让程序更完整 。
案例:
s =input("请输入一个整数: ")
s = int(s)
if s > 5:
print("大于 5")
elif s < 5:
# 空语句,相当于占位符
pass
else :
print ("等于 5")
断言 assert
断言语句和 if分支有点类似,它用于对一个 bool 表达式进行断言,如果该 bool 表达式为 True,该程序可以继续向下执行, 否则程序会引发 AssertionError 错误。
assert 断言的执行逻辑是:
if 条件为 False :
程序引发 AssertionError 错误
案例:
input_age = input("请输入您的年龄 :")
age = int (input_age)
assert 20 < age < 80
print("您输入的年龄在 20 和 80 之间")
循环结构
while 循环
案例:
# 循环的初始化条件
i = 8
# 当 i 小于 10 时,执行循环体
while i < 10 :
print("i 的值为:", i)
# 迭代语句
i += 1
print("循环结束!")
在使用 while 循环, 一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环,永远无法结束这个循环。
案例:
# 循环的初始化条件
i = 8
# 当 i 小于 10 时,执行循环体
while i < 10 :
print("i 的值为:", i)
# 迭代语句
i -= 1
print("循环结束!")
使用 while 循环遍历列表和元组
由于列表和元组的元素都是有索引的,因此程序可通过 while循环、 列表或元组的索引来遍历列表和元组中的所有元素。
遍历元组案例:
tuple1 = ('zhangsan', 'lisi', 'wangwu')
i = 0
# 只有 i 小于 len(tuple1 ),继续执行循环体
while i < len(tuple1):
print(tuple1[i])
#根据 i来访问元组的元素
i += 1
遍历列表案例:
list1 = ['zhangsan', 'lisi', 'wangwu']
i = 0
# 只有 i 小于 len(list1 ),继续执行循环体
while i < len(list1):
print(list1[i])
#根据 i来访问列表的元素
i += 1
for-in 循环
语法:
for 变量 in 字符串|范围|集合等 :
statements
使用 for-in 循环遍历列表和元组
在使用for-in 循环遍历列表和元组时,列表或元组有几个元素,for-in 循环的循环体就执行几次。
for-in 遍历元组案例:
tuple1 = ('zhangsan', 'lisi', 'wangwu')
for ele in tuple1 :
print("当前元素是:", ele)
for-in 遍历列表案例:
list1 = ['zhangsan', 'lisi', 'wangwu']
for ele in list1 :
print("当前元素是:", ele)
使用 for-in 循环遍历字典
使用 for-in 循环遍历字典其实也是通过遍历普通列表来实现的。
字典包含了如下三个方法,先调用字典的上面三个方法之一来获取字典的所有 key-value 对、 所有 key、 所有 value, 再进行遍历。
1、items():返回字典中所有 key-value对的列表
2、 keys():返回字典中所有 key 的列表
3、values():返回字典中所有 value 的列表
案例:
dict1 = {'语文': 89, '数学': 92, '英语': 80}
# 通过 items ()方法遍历所有的 key-value 对
# 由于 items 方法返回的列表元素是 key value 对,因此要声明两个变量
for key, value in dict1.items() :
print('key:', key)
print('value:', value)
# 通过 keys ()方法遍历所有的 key
print("-------------")
for key in dict1.keys():
print('key:', key)
# 通过 key 获取 value
print('value', dict1[key])
# 通过 values()方法遍历所有的 value
print("-------------")
for value in dict1.values() :
print('value :', value)
循环使用 else
Python 的循环都可以定义 else 代码块,当循环条件为 False 时,程序会执行 else 代码块
while 和 else 使用案例:
i = 0
while i < 5 :
print('i 小于 5:', i)
i += 1
else:
print('i大于或等于 5:', i)
for-in 和 else 使用
for循环同样可使用 else 代码块,当 for 循环把区间、元组或列表的所有元素遍历一次之后,for 循环会执行 else 代码块,在 else 代码块中,循环计数器的值依然等于最后一个元素的值。
案例:
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
for name in list1 :
print("name in list1", name)
# 访问循环计数器的值,依然等子最后一个元素的值
else :
print("name not in list1", name)
嵌套循环
如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环。嵌套循环既可以是 for-in 循环嵌套 while 循环,也可以是 while 循环嵌套 do while 循环,即各种类型的循环都可以作为外层循环,各种类型的循环也都可以作为内层循环。
for 表达式
for 表达式用于利用其他区间、元组、列表等可迭代对象创建新的列表。
语法:
[表达式 for 循环计数器 in 可法代对象]
案例:
range1 = range(10)
# 用for-in 循环遍历每个元素,然后将每个元素乘以2
list1 = [x * 2 for x in range1]
print(list1)
还可以在 for 表达式后面添加 if 条件,这样 for表达式将只迭代那些符合条件的元素。
案例:
range1 = range(10)
list2 = [x * 2 for x in range1 if x % 2 ==0]
# list2 集合包含5个元素
print(list2)
如果将 for 表达式的方括号改为圆括号,for 表达式将不再生成列表,而是生成一个生成器 (generator),该生成器同样可使用 for循环选代。
案例:
range1 = range(10)
# 使用 for 表达式创建生成器
generator1 = (x * 2 for x in range1 if x % 2 == 0)
# 使用 for 循环迭代生成器
for x in generator1 :
print(x, end='\t')
for 表达式可使用多个循环,就像嵌套循环一样
案例:
list1 = [ (x, y) for x in range(3) for y in range(2)]
# list1列表包含6个元素
print(list1)
上面的 for 表达式相当于如下嵌套循环
案例:
list1 = []
for x in range(3) :
for y in range(2):
list1.append((x, y))
print(list1)
控制循环结构
Python 提供了 continue 和 break 来控制循环结构,除此 之外,使用 return 可以结束整个方法,当然也就结束了一次循环
使用break结束循环
break 用于完全结束一个循环,跳出循环体,不管是哪种循环,一旦在循环体中遇到 break,系统就将完全结束该循环,开始执行循环之后的代码。
案例:
# 一个简单的 for 循环
for i in range(0 , 10) :
print("i 的值是 :", i)
if i == 2 :
# 执行该语句时将结束循环
break
对于带 else 语句块的 for 循环,如果使用 break 强行中止循环,程序将不会执行 else 块。
案例:
# 一个简单的 for 循环
for i in range(0 , 10) :
print("i 的值是 :", i)
if i == 2 :
# 执行该语句时将结束循环
break
# 以下语句不会被执行
else :
print("else 语句块", i)
使用 continue 忽略本次循环的剩下语句
continue 的功能和 break 有点类似,区别是 continue 只是忽略当次循环的剩下语句,接着开始下一次循环,并不会中止循环,而 break 则是完全中止循环本身。
案例:
# 一个简单的 for 循环
for i in range(5):
print("i 的值是:", i)
if i == 1:
# 忽略本次循环后面的语句,当 i 的值为1的时候直接跳过下面的语句,执行下一次循环
continue
print("continue 后的语句")
使用return结束方法
Python程序中的大部分循环都被放在函数或方法中执行,一旦在循环体内执行到一条 return 语句时,return 语句就会结束该函数或方法,循环自然也随之结束。
案例:
def test() :
# 外层循环
for i in range(10) :
for j in range(10) :
print("i 的值为:%d ,j 的值为:%d" %(i, j))
if j == 1 :
# 循环只能执行到i等于0、j等于1,当j等于l时程序将完全结束
return
print("return 后的输出语句")
test()
想学习更多Python知识,请关注微信公众号 莫同学vv