一、前言
我们现在能够熟练使用单一变量,列表,元组和字典,但仅限于赋值,打印输出这些操作,在实际应用中,我们要进行更为复杂的运算,比如两个值大小的比较,或者依次获取列表中的元素,要是还用之前那种方法,一个个的去操作,那可太麻烦了,所以在这一章我们给大家介绍条件判断和循环的操作。
二、条件语句
条件语句基本格式为:
if 判断条件1:
执行语句1
elif 判断条件2:
执行语句2
elif 判断条件3:
执行语句3
...
else :
执行语句4
首先,代码会先执行判断条件1,若条件通过,则跳到执行语句1并跳出。若不符合,则执行判断条件2,条件通过,跳到执行语句2并跳出,若仍然不符合,则执行判断条件3… …以此类推,若以上不都符合,则执行else中的执行语句4并跳出。具体举例代码如下:
a = 1
b = 2
c = 'a'
d = 'b'
if a > 2: # 条件不符合,进入下一个判断
print('a 比 2 大')
elif b > 3: # 条件不符合,进入下一个判断
print('b 比 3 大')
else: # 以上条件都不符合,直接进入else
print('以上条件都不符合')
if b > a: # 条件符合,执行并跳出,不会再执行后面的elif和else语句
print('b 比 a 大')
elif b > 3:
print('b 比 3 大')
else:
print('以上条件都不符合')
if d == 2: # 条件不符合,进入下一个判断
print('\'d\' 等于 2')
elif d > c: # 条件符合(条件判断也可以直接判断字符串的大小),执行并跳出,不会再执行后面的elif和else语句
print('\'d\' 比 \'c\' 大')
elif c == 2:
print('\'c\' 等于 2')
else:
print('以上条件都不符合')
结果: 以上条件都不符合
b 比 a 大
'd' 比 'c' 大
若判断条件较少,可以直接省略中间的elif部分,形成如下格式:
if 判断条件:
执行语句1
else :
执行语句2
首先代码会执行判断条件,若符合则进入执行语句1,若不符合,进入执行语句2,举例代码如下:
a = 1
if a > 1:
print('a 比 1 大')
else:
print('不符合条件')
if a > 0:
print('a 比 0 大')
else:
print('不符合条件')
结果: 不符合条件
a 比 0 大
或者,我们有时候并不需要else里面的执行语句,那我们只用一个if也可以完成
a = 1
if a > 1:
print('a 比 1 大')
if a > 0:
print('a 比 0 大')
结果: a 比 0 大
这是条件语句最基本的用法,那我们可以结合我们第二章讲的比较运算和逻辑运算,写出相对复杂的条件判断代码
a = True
b = False
c = 1
d = 2
if (a and b) or (d > c): # 若a 与 b 均为True,或者 d 大于 c,两者满足任意一个,则进入执行语句
print('a 与 b 均为True,或者 d 大于 c')
if (a and b) and (d > c): # 若a 与 b 均为True,并且 d 大于 c,两者均要满足,才能进入执行语句
print('a 与 b 均为True,并且 d 大于 c')
if (a is not False) and (d != c): # 若a 不为False,并且 d 不等于 c,两者均要满足,才能进入执行语句
print('a 不为False,并且 d 不等于 c')
结果: a 与 b 均为True,或者 d 大于 c
a 不为False,并且 d 不等于 c
三、循环语句
循环语句,顾名思义,就是当满足一定条件时,代码在指定的空间里面循环执行,常用的循环语句有以下两种:
while 循环
for 循环
1、while循环
while循环就是当满足设置的条件时,代码语句会一直在while中循环执行,直到不满足条件或者人为跳出,举例如下:
a = 1
while a < 10: # 当a小于10时,一直执行while里面的语句
print(a) # 打印a当前的值
a += 1 # a自增1
结果: 1
2
3
4
5
6
7
8
9
上面代码可以看出,a的初始值为1,while循环的条件是a < 10,所以1 < 10,符合条件所以进入循环执行语句,首先是打印a当前的值,则为1,然后a自增1,这时a变成2,再回到开头判断a < 10这个条件是否成立,发现成立,则继续执行,直到a等于9的时候,先打印9出来,然后a自增1,由9变成了10,这时候10 < 10这个条件不成立了,则循环结束。
2、break语句
上面这个是有条件的循环,有人说我想做一个无限循环怎么办,那我们可以直接使用下面这种格式
while True:
执行语句
但是不是死循环就无法退出了呢?当然不是了,这时我们的break就派上用场了,当循环语句遇到break的时候,就会跳出当前的循环
a = 1
while True:
print(a)
a += 1
print(a)
break
print(1)
结果: 1
2
我们可以看到,在死循环里,只执行了前两个print,然后遇到了break,代码直接跳出循环,不会再执行第三个print。
3、continue语句
除了break语句之外,循环当中还有一个比较重要的语句,是continue语句,与break跳出循环不同的是,continue语句是跳过本轮循环而去执行下一轮的循环,是不是听起来有点绕,没事,给大家举一个例子就明白了
# 首先是break,a的初始值为1,每一个循环打印a的值,并自增1,当a大于5时,break,循环结束
a = 1
while True:
print(a)
a += 1
if a > 5:
break
结果: 1
2
3
4
5
# 下来是continue,a的初始值为1,每一个循环打印a的值,并自增1,当a等于3时,先执行a += 1语句,这时a的值为4,然后跳过下面的所有语句,再进入下一个循环,即if a == 3这条语句上来
a = 1
while True:
if a == 3:
a += 1
continue # 当执行到continue语句的时候,continue后面的语句就不会再执行了,而是进入到下一轮的循环当中,即循环语句的开头
print(a)
a += 1
if a > 5:
break
结果: 1
2
4
5
4、for 循环
除了while循环之外,我们还有一种循环是for循环,这种循环比较适合我们之前学习到的列表,字典的遍历,他的基本格式如下:
for 变量 in 要遍历的元素集合
我们可以使用for循环来写出刚才我们while循环的的一个代码
for a in range(1, 10): # range返回的是一个大于等于1,小于10的对象
print(a)
结果: 1
2
3
4
5
6
7
8
9
也可以遍历字符串中的每一个字符
for a in "Donnie":
print(a)
结果: D
o
n
n
i
e
可以获取列表中的每一个值:
a = [1, 2, 3, 4, 5, 6]
for i in a:
print(i)
结果: 1
2
3
4
5
6
也可以获取字典中的每一个key和value
a = {'name': 'Donnie', 'age': 22, 'height': 180}
for key, value in a.items(): # items以列表返回当前字典可遍历的(键, 值) 元组数组。
print(key, value)
结果: name Donnie
age 22
height 180
当然,break和continue也适用于for循环中
for a in range(1, 10):
print(a)
if a > 5:
break
print('-------------')
for a in range(1, 10):
print(a)
if a == 5:
continue
结果: 1
2
3
4
5
6
-------------
1
2
3
4
5
6
7
8
9
5、循环的嵌套
我们介绍了简单循环语句,在实际应用场景中,我们的语句、逻辑可能是一层套一层,拿Python也为我们提供了循环的嵌套,即循环中套循环,while可以嵌套while,for可以嵌套for,或者while与for互相嵌套,都是可以的
# while嵌套while
a = 1
while a < 3:
b = 1
print('a = %d' % a)
a += 1
while b < 3:
if b == 2:
break # break会跳出当前的while b < 3的循环,不会跳出外面的循环
print('b = %d' % b)
b += 1
结果: a = 1
b = 1
a = 2
b = 1
# for嵌套for
for i in range(0, 2):
print("i == %d" % i)
for j in range(0, 2):
print("j == %d" % j)
结果: i == 0
j == 0
j == 1
i == 1
j == 0
j == 1
# for、while互相嵌套
for i in range(0, 2):
print("i == %d" % i)
j = 0
while j < 2:
print("j == %d" % j)
j += 1
结果: i == 0
j == 0
j == 1
i == 1
j == 0
j == 1
四、总结
条件语句和循环语句结束了,大家通过这些,已经可以写出相对复杂的代码了,但是大家慢慢发现,这样类似流水账似的写代码,不仅文件特别大,而且特别的混乱,甚至改一行代码是动一发而牵全身。为了让我们的代码更加优美,更加模块化,我们需要把一些代码进行封装,那就要用到类和方法,一切皆对象,下一节就让我们来看看,这门动态语言是如何运用对象的