本文利用的是 Python 3.x 版本,建议学习 3.x 版本
Python 中的分支判断、循环
1. 分支条件判断
1.1 比较操作
以下是数之间常见的比较操作,例如 5 >3 就是数学意义上的比较,5 是大于 3 的,所以这个式子的值是 True。如何比较,根据两个数之间的符号判断即可。这里要注意的是!= 是不相等的意思,== 是相等的意思。例如 5 == 3 这显然是不对的,所以式子的值是 False
# i j 是变量名
i > j
i >= j
i < j
i <= j
i == j
i != j
1.2 逻辑操作
not a #如果 a 是 True 则 结果为 False,反之同理
a and b #同时为 True 时,结果为 True
a or b #至少一个为 True,结果为 True
在布尔值之间进行运算,之前说数据类型的时候也说过。我们说了例如 5 >3 这样的比较的式子的值是布尔值,也就是说可以将式子进行逻辑运算。例如
5>3 and 5==3
#相当于 True and False 结果是 False
下面是测试结果
1.3 控制流,分支
计算机可以进行自动化操作,因为可以按照我们给定的条件判断执行,所以分支判断是必不可少的。简单来说就是,如果条件 A 成立,那么做些什么,不成立做些什么,例如如果今天下雨,我就不出门。
最简单的条件判断语句如下,有几个地方容易出错,条件后要用冒号,if 条件块里的代码要进行缩进,4 个空格,如果了解其他语言的同学应该知道,很多语言的代码块是靠大括号 {} 来标识的。为什么要有代码块?代码块内的代码的层次是一样的。举个例子,如果不区分代码块,那么如果 if 判断条件成立后,代码究竟要执行到哪里?所以当条件成立时,执行这个 if 后的代码块内的内容。一定要注意缩进,不然在 py 中会出错的。当然现在的代码编辑器多数都很智能,在写完冒号后敲击回车,就可以自动缩进 4 个空格,我用的 VScode 就是这样的,很方便。
#如果 < 条件 > 为 True,则执行 if 块
#里的操作,注意缩进和冒号!!
if < 条件 >:
操作 1
操作 2
……
#实例
x = 6
if x>3 and x<8:
print(“hello”)
#结果会打印出 hello
接下来稍微复杂,就是 if else,意思是如果 if 判断的条件成立(结果为 True),则执行 if 代码块内的代码,如果不成立则执行 else 代码块内的代码。简单来说就是如果条件成立,则执行 if 代码块内的代码,否则执行 else 内的代码。else 和 if 一样也要加冒号以及代码块的缩进。
#先执行 if 的 < 条件 > 查看是否为 True,
#如果为 True 则进入 if 块,不会进入
#else,如果为 False 则进入 else,不进入 if
if < 条件 >:
操作 1
操作 2
……
else:
操作 1
操作 2
……
#实例
x = 6
if x > 7:
print(1)
else:
print(2)
#结果会打印出 2
接下来是多条件判断,以上的判断都是单条件,非此即彼的判断。多条件判断可以用多个条件来判断,先查看条件 1 是否成立,如果成立则进入代码块执行,如果条件 1 不成立,继续看条件 2 是否成立……多条件用 elif 也要加冒号以及代码块缩进。
# 多重条件,先看是否能进 if,
# 如果没进则继续判断是否能进 elif……
# 如果都没进,且有 else 的话,进入 else
if < 条件 1 >:
操作 1
操作 2
……
elif< 条件 2 >:# elif 可以有多个
操作 1
操作 2
……
else:# else 可以没有
表达式
表达式
……
#实例
x = 6
if x > 10:
print(1)
elif x > 7 and x < 9:
print(2)
elif x > 4 and x < 7:
print(3)
else:
print(4)
#结果会打印出 3
这里再说一下多重条件和多个 if 的区别,在多重条件中,一旦某一条件成立,那么之后的代码就不会执行了,就不会再去判断之后的条件了。
if < 条件 1 >:# 每个条件都要判断
操作
if < 条件 2 >:# 每个条件都要判断
操作
if < 条件 3 >:# 每个条件都要判断
操作
if < 条件 1 >:# 如果条件 1 成立,不再判断后面的条件
操作
elif < 条件 2 >:
操作
elif < 条件 3 >:
操作
嵌套条件判断,不建议过深的嵌套
if < 条件 1 >:
if < 条件 2 >:
操作
else:
操作
else:
操作
练习一下,要求用户从控制台输入两个 float 数(x,y),要给出提示(例如:请输入数 x),判断 x y 的大小,如果相等则输出相等。如果 x 大则输出 x 大,如果 x 小则输出 x 小。如果 x 大于 y 时,如果 y 不等于 0,则输出 x / y 的数值。
x = float(input(“ 请输入数 x:”))
y = float(input(“ 请输入数 y:”))
if abs(x-y)<1.0e-9:
print(“x,y 相等 ”)
elif x > y:
print(“x 大于 y ”)
if abs(y)>1.0e-9:
print(“x/y=”,x/y)
else:
print(“x 小于 y ”)
解释一下 abs(x-y)<1.0e-9,abs 是求绝对值函数,当 x 和 y 的差值小于 1^(-9)时,就认为 x 和 y 是相等的,这是因为浮点数的表示是有误差的,用 == 来比较很危险,所以只要在我们需要的精度内相等即可。
2. 循环
2.1 while loop
当我们需要执行大量相似的操作时,这时循环就派上用场了,首先说一下 while 循环。
while < 条件 >:# 注意冒号和 4 个空格的缩进
操作
……
如果 < 条件 > 为 True,则执行 while 块里的所有操作,然后继续检查 < 条件 > 是否为 True,一直重复块里的表达式,直到 < 条件 > 为 False,如下例子
n = 0
while n < 5:
print(n)
n = n + 1
2.2 for loop
for 循环,相对于 while 更加确定执行的次数,while 根据条件来确定是否执行,而 for 通常是给定了执行的次数。
for < 变量 > in range(< 一些数字 >):
< 表达式 ># 注意冒号和 4 个空格的缩进
……
#实例
for v in range(6):
print(v)
#结果会打印 0 -5
sum = 0
for i in range(101):
sum = sum + i
#求 0 -100 的和
相当于每次把值赋予给变量,然后在代码块内部可以使用这个变量,
2.3 range(start,stop,step)
默认的参数是 start=0,代表从哪个数开始,step=1,代表步长,意味着每次增加多少,数的范围是 0~stop-1
mysum = 0
for i in range(7,10):
mysum += i
print(mysum)
#求 7 8 9 的和
mysum = 0
for i in range(5,11,2):
mysum += i
print(mysum)
#求 5 7 9 的和
2.4 break
break 表示立即退出循环,跳过剩下在块里的表达式,仅仅退出最里层的循环!简单来说就是给一个条件,当这个条件成立时,退出循环,经常和 if 搭配使用。
mysum = 0
for i in range(5,11,2):
mysum += i
#当 mysum 等于 5 的时候,退出循环
if mysum == 5:
break
musum += 1
print(mysum)
2.5 for 和 while 的比较
for
知道迭代的次数
可以通过 break 提前结束循环
使用计数器,因为有个变量可以帮助计数
可以用 while 循环来重写 for 循环
while
迭代次数无限制
可以通过 break 提前结束循环
可以使用计数器,但是得提前初始化,并且每次得更新
可能没法用 for 循环重写 while
到此为止有了判断、循环、输入、输出后,就可以写一些简单的程序了
如果觉得不错,可以分享~,可以关注公众号~