条件判断
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
1 | if 判断条件: 执行语句…… else: 执行语句…… |
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。
GIF演示:
例:
1 | #!/usr/bin/python # -*- coding: UTF-8 -*- # 例1:if 基本用法 flag = False name = 'luren' if name == 'python': # 判断变量是否为 python flag = True # 条件成立时设置标志为真 print 'welcome boss' # 并输出欢迎信息 else: print name # 条件不成立时输出变量名称 |
输出:
luren # 输出结果
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
1 | if 判断条件1: 执行语句1…… elif 判断条件2: 执行语句2…… elif 判断条件3: 执行语句3…… else: 执行语句4…… |
其中elif
是elseif
的缩写。
例:
1 | #!/usr/bin/python # -*- coding: UTF-8 -*- # 例2:elif用法 num = 5 if num == 3: # 判断num的值 print 'boss' elif num == 2: print 'user' elif num == 1: print 'worker' elif num < 0: # 值小于零时输出 print 'error' else: print 'roadman' # 条件均不成立时输出 |
输出:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
1 | #!/usr/bin/python # -*- coding: UTF-8 -*- # 例3:if语句多个条件 num = 9 if num >= 0 and num <= 10: # 判断值是否在0~10之间 print 'hello' # 输出结果: hello num = 10 if num < 0 or num > 10: # 判断值是否在小于0或大于10 print 'hello' else: print 'undefine' # 输出结果: undefine num = 8 # 判断值是否在0~5或者10~15之间 if (num >= 0 and num <= 5) or (num >= 10 and num <= 15): print 'hello' else: print 'undefine' # 输出结果: undefine |
当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
循环
要计算1+2+3,我们可以直接写表达式:
1 | >>> 1 + 2 + 3 6 |
要计算1+2+3+...+10,勉强也能写出来。
但是,要计算1+2+3+...+10000,直接写表达式就不可能了。
为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。
For循环
Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:
1 | names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) |
执行这段代码,会依次打印 names
的每一个元素:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
所以 for x in ...
循环就是把每个元素代入变量x,然后执行缩进块的语句。
再比如我们想计算1-10的整数之和,可以用一个sum变量做累加:
1 | sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum) |
如果要计算1-100的整数之和,从1写到100有点困难。
Python提供了一个 range()
函数,可以生成一个整数序列。
range(101)
就可以生成0-100的整数序列,计算如下:
1 | sum = 0 for x in range(101): #因为是从0开始生成所以生成到100时是第101个数 sum = sum + x print(sum) |
While循环
只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:
1 | sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum) |
在循环内部变量 n
不断自减,直到变为 -1
时,不再满足while条件,循环退出。
Break函数
在循环中,break
语句可以提前退出循环。例如,本来要循环打印1~100的数字:
1 | n = 1 while n <= 100: print(n) n = n + 1 print('END') |
上面的代码可以打印出1~100。
如果要提前结束循环,可以用 break
语句:
1 | n = 1 while n <= 100: if n > 10: # 当n = 11时,条件满足,执行break语句 break # break语句会结束当前循环 print(n) n = n + 1 print('END') |
执行上面的代码可以看到,打印出1~10后,紧接着打印 END
,程序结束。
可见 break
的作用是提前结束循环。
Continue函数
在循环过程中,也可以通过 continue
语句,跳过当前的这次循环,直接开始下一次循环。
1 | n = 0 while n < 10: n = n + 1 print(n) |
上面的程序可以打印出1~10。但是,如果我们想只打印奇数,可以用 continue
语句跳过某些循环:
1 | n = 0 while n < 10: n = n + 1 if n % 2 == 0: # 如果n是偶数,执行continue语句 continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行 print(n) |
执行上面的代码可以看到,打印的不再是1~10,而是1,3,5,7,9。
可见 continue
的作用是提前结束本轮循环,并直接开始下一轮循环。
小结
循环是让计算机做重复任务的有效的方法。
break
语句可以在循环过程中直接退出循环,而 continue
语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合 if
语句使用。
要特别注意,不要滥用 break
和 continue
语句。break
和 continue
会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到 break
和 continue
语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉 break
和 continue
语句。
有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。
鸣谢
转载自:
Zeruns's Blog
Python 理论知识(三)条件和循环
评论