Python有三种控制流:顺序结构、条件分支结构以及循环结构,事实上,这同样和其他语言是相通的。接下来,我们将一步步来了解Python的控制流语句。
python的if条件分支语句
首先,我们简单地来看一个if
条件语句,其实也就是简单的逻辑判断
a = 5
if a > 5:
print("a >= 5")
elif a == 5:
print("a = 5")
else:
print("print else")
我们得到的打印结果是:
a = 5
很显然,a是等于5的,所以走了elif
。注意的是,在python3
中,我们写下一个if
条件判断使用的是elif
,而不是像其他语言一样使用的是熟悉的else if
, 比如我们写成下面这样就会报错
else if a == 5:
print("a = 5")
python
语言的灵活赋予它极大的简洁性,在if
条件语句中,我们的条件判断可以加括号()
, 也可以不加,比如下面的写法也是支持的
age = 18
# 下面代码中,给条件加()也是可以的
if (age > 18):
print("age > 18")
elif (age == 18):
print("age == 18")
else:
print("age < 18")
注意:在python语言中,有效的缩进是非常严格和重要的,一般来说,python推荐的是4个空格键缩进,或者使用
tab
键缩进即可。
我们来看一段缩进错误的代码
# 注意:这句代码开头空了一格
age = 18
if (age > 18):
print("age > 18")
else:
print("age <= 18")
在运行后:
File "python.py", line 3
age = 18
^
IndentationError: unexpected indent
意思就是告诉你缩进错误。
if的逻辑运算符 与(and)
在日常开发中,有时候需要条件并列来判断是否成立,这时我们很自然就要用到逻辑运算符与(and)。和其他很多语言不一样的是,比如在swift
中,我们经常使用操作符&&来表示条件的并列,但是python
就不一样,我们看个例子:
number = 15
if number == 15 and number < 16:
print("number == 15 and number < 16")
elif number == 16:
print("number >= 16")
else:
print("nothing")
打印结果:
number == 15 and number < 16
很显然,第一个并列条件成立,即15=15并且15<16。
if的逻辑运算符 或(or)
操作方式与逻辑运算符 与 类似,这是意思不一样而已,或表示只要成立其中任意一个条件即可
dogs = 15
if dogs == 16 or dogs < 17:
print("dogs = 16 or dogs < 17")
elif dogs < 0:
print("dogs >= 16")
else:
print("nothing")
输出结果
dogs = 16 or dogs < 17
if的逻辑运算符 非(not)
在swift
中,我们要一个取一个相反的条件,通常就是一个感叹号表示取反就好,但是,在python
中,我们不再使用所用的感叹号!
来给一个条件取反,而是使用python
专有的逻辑运算符非not
, 我们来看下面这个例子
a = 5
if not a > 5:
print("yes")
else:
print("no")
输出结果:
yes
因为变量a
是等于5
的, 对于条件a > 5
肯定是不成立的,那么取反的话显然就成立了,所以有not a > 5
, 即 a <= 5
。
while循环语句
python
的控制流其实和Swift
或者其他很多语言也极其相似,使用也非常简单。在日常开发中也会用到,只是大多数情况下使用的几率没有if
条件语句多,我们来看下面一个while
控制流代码
a = 5
while a < 10:
print("a is " + str(a))
a += 1
输出结果:
a is 5
a is 6
a is 7
a is 8
a is 9
其实上面这个例子想当初级,基本上我想大家都知道,也不用我过多的解释了。补充一点点,刚才也说过,在python
的基本控制流中,我们可以对条件使用括号()
,也可以不使用括号,比如下面这样写法是一样的
a = 5
while (a < 10):
print("a is " + str(a))
a += 1
输出结果:
a is 5
a is 6
a is 7
a is 8
a is 9
python中的for循环
在每一种语言中,for
循环几乎是无处不在的,我们来看看python
中的for
循环,其实也非常简单
names = ["dog", "rabbit", "cat"]
for name in names:
print('animal is ' + name)
输出结果:
animal is dog
animal is rabbit
animal is cat
在python
中,我们在for
循环中经常还会用到一种范围称为range()
, 它的使用有时候会使我们的操作变得非常方便,比如我们现在想要输出1到9,我们可以操作range()
来达到输出效果
for i in range(1, 10):
print(i)
输出结果:
1
2
3
4
5
6
7
8
9
python中的break语句
每一种语言,其实万变不离其宗
, python
也是如此,比如python
中也有常用的break
语句,以及 continue
语句,下面,我们来看一个简单的例子
people = ["Jhon", "Alice", "Madson"]
for man in people:
if man == "Alice":
break
print("where is " + man + "?")
输出结果:
where is Jhon?
解释一下,当遍历数组people
时,在里面判断,若man
这个人是Alice
的时候,使用break来退出本层循环
那接着我们来看一下break
和continue
的区别
people = ["Jhon", "Alice", "Madson"]
for man in people:
if man == "Alice":
continue
print("where is " + man + "?")
输出结果:
where is Jhon?
where is Madson?
很显然,关键字break
是退出本层循环, 而关键字continue
是退出本次循环。在日常使用中,一定要注意这两者的区别,否则会造成意想不到的结果。
python练习
在学习了python
的简单控制流后,我们初步了解了python
的for
、while
、if
等控制条件循环语句,并且也了解了关键字break
、continue
,以及范围符range()
的使用。现在,我们来练习一下,如何输出一个乘法口诀表呢?
乘法口诀表如下
for i in range(1, 10):
for j in range(1, i + 1):
# end = " " 代表不换行输出空格,我们也可以使用 end = "\t"代替不换行输出,效果是一样的
print(str(i) + "*" + str(j) + "=" + str(i * j), end = " ")
# 代表换行
print("")
输出结果
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
既然现在我们成功地输出了乘法口诀表,那么逆向思维一下,我们可不可以输出逆向的乘法口诀表呢?答案显然是可能的,而且方法并不唯一,我们看看下面的代码
for i in range(9, 0, -1):
for j in range(i, 0, -1):
print(str(i) + " * " + str(j) + " = " + str(i * j), end = "\t")
print()
输出结果
9 * 9 = 81 9 * 8 = 72 9 * 7 = 63 9 * 6 = 54 9 * 5 = 45 9 * 4 = 36 9 * 3 = 27 9 * 2 = 18 9 * 1 = 9
8 * 8 = 64 8 * 7 = 56 8 * 6 = 48 8 * 5 = 40 8 * 4 = 32 8 * 3 = 24 8 * 2 = 16 8 * 1 = 8
7 * 7 = 49 7 * 6 = 42 7 * 5 = 35 7 * 4 = 28 7 * 3 = 21 7 * 2 = 14 7 * 1 = 7
6 * 6 = 36 6 * 5 = 30 6 * 4 = 24 6 * 3 = 18 6 * 2 = 12 6 * 1 = 6
5 * 5 = 25 5 * 4 = 20 5 * 3 = 15 5 * 2 = 10 5 * 1 = 5
4 * 4 = 16 4 * 3 = 12 4 * 2 = 8 4 * 1 = 4
3 * 3 = 9 3 * 2 = 6 3 * 1 = 3
2 * 2 = 4 2 * 1 = 2
1 * 1 = 1
这样一个简单的逆向乘法口诀表就完成了,当然,也有其他的输出方法,答案是唯一的,但是方法并不是唯一的。
网友评论