Python 条件语句
Python条件语句是根据 一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定:
任何非0和非空(null)值为true,
0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
其中”判断条件”成立时(非零或非null),则执行后面的语句,
执行的内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,在条件不成立时执行,
具体例子如下:
# coding=utf8
# 例1:if 基本用法
age = 12
name = 'Mathilda'
isLoli = False
if age > 8 and age < 14: # 判断变量否为'Lolita'
isLoli = True # 条件成立时设置标志为真
print 'a cute loli' # 并输出欢迎信息
else:
print age # 条件不成立时输出变量名称
输出结果为:
>>> a cute loli # 输出结果
if 语句的判断条件可以用>(大于)、=(大于等于)、<=(小于等于)等来表示其关系。
当判断条件为多个值时,可以使用以下elif形式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
实例如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例2:elif用法
age = 13
if age < 8: # 判断num的值
print 'baby'
elif age < 14:
print 'loli'
elif age < 18:
print 'lass'
elif num < 0: # 值小于零时输出
print 'error'
else:
print 'adult' # 条件均不成立时输出
输出结果为:
>>> loli # 输出结果
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,
如果判断需要多个条件需同时判断时,
可以使用 or (或),表示两个条件有一个成立时判断条件成功;
使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,
此外 and 和 or 的优先级低于 >(大于)、<(小于)等判断符号,
即 大于>和小于< 在没有括号的情况下, 会比与或要优先判断。
简单的语句组
你也可以在同一行的位置上使用if条件判断语句,如下实例:
以上代码执行输出结果如下:
娉娉袅袅十三余 Hello Lolita
Python 循环语句
本章节将向大家介绍Python的循环语句,
程序在一般情况下是按顺序执行的。
但是,编程语言提供了各种控制结构,从而允许更复杂的执行路径。
循环语句允许我们执行一个语句或语句组多次,
下面是在大多数编程语言中的循环语句的一般形式:
Python提供了for循环和while循环
(在Python中没有do..while循环):
循环类型 | 描述 |
---|---|
while 循环 | 在给定的判断条件为 true 时执行循环体,否则退出循环体。 |
for 循环 | 重复执行语句 |
嵌套循环 | 你可以在while循环体中嵌套for循环 |
循环控制语句
循环控制语句可以强行更改语句执行的顺序。
Python支持以下循环控制语句:
控制语句 | 描述 |
---|---|
break 语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue 语句 | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 |
pass 语句 | pass是空语句,是为了保持程序结构的完整性。 |
Python While循环语句
Python 编程中 while 语句用于循环执行程序,
即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
其基本形式为:
while 判断条件:
执行语句……
执行语句可以是单个语句或语句块。
判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假false(即 0 或 null)时,循环结束。
执行流程图如下:
Gif 演示 Python while 语句执行过程
实例:
#!/usr/bin/python
count = 5
while (count < 8):
print 'The count is:', count
count = count + 1
print "Good bye!"
以上代码执行输出结果:
The count is: 5
The count is: 6
The count is: 7
Good bye!
while 语句时还有另外两个重要的命令 continue,break 来跳过循环,
continue 用于跳过该次循环,
break 则是用于退出循环,
此外”判断条件”还可以是个常值,表示循环必定成立,
具体用法如下:
# continue 和 break 用法
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过本次循环,进入下次循环,因此奇数不会输出
continue
print i # 输出双数2、4、6、8、10
i = 5
while 1: # 循环条件为1必定成立
print i # 输出5,6,7
i += 1
if i > 7: # 当i大于7时跳出循环
break
无限循环
如果条件判断语句永远为 true,循环将会无限的执行下去,
如下实例:
#coding=utf-8
#!/usr/bin/python
isForever = 1
while isForever == 1 : # 该条件永远为true,循环将无限执行下去
num = raw_input("Enter a number :")
print "You entered: ", num
print "Good bye!"
以上实例输出结果:
Enter a number :67
You entered: 67
Enter a number :520
You entered: 520
Enter a number :5
You entered: 5
Enter a number between :Traceback (most recent call last):
File "test.py", line 5, in <module>
num = raw_input("Enter a number :")
KeyboardInterrupt
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
循环使用 else 语句
在 python 中,for … else 表示下面这样的意思:
for 中的语句和普通的没有区别,
但是, else 中的语句会在循环正常执行完的情况下开始执行,
(即 for 循环 不是 通过 break 跳出循环而中断的)
while … else 也是一样。
#!/usr/bin/python
age = 12
while age < 15:
print age, " is less than 15"
age = age + 1
else:
print age, " is not less than 15"
以上实例输出结果为:
12 is less than 15
13 is less than 15
14 is less than 15
15 is not less than 15 // 在while循环正常结束后,执行else中的语句
简单语句组
类似if语句的语法,
如果你的while循环体中只有一条语句,
那么,你可以将该语句与while写在同一行中,
如下所示:
#!/usr/bin/python
isLoli = 1
while (isLoli): print 'She really is a loli!'
print "Good bye!"
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
While循环语句实例
猜拳小游戏
以上实例输出结果为:
输入 石头、剪子、布,输入"end"结束游戏:石头
电脑出了: 石头,平局!
输入 石头、剪子、布,输入"end"结束游戏:石头
电脑出了: 剪子,你赢了!
输入 石头、剪子、布,输入"end"结束游戏:
Python for 循环语句
Python for循环可以遍历任何序列的项目,如一个List列表或者一个字符串。
语法:
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
流程图:
实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Beyond': # 第一个实例
print '当前字母 :', letter
tmpList = ['未闻花名', 'vwhm.net', 'beyond']
for str in tmpList: # 第二个实例
print '当前字母 :', str
print "Good bye!"
以上实例输出结果:
Current Letter : B
Current Letter : e
Current Letter : y
Current Letter : o
Current Letter : n
Current Letter : d
Current fruit : 未闻花名
Current fruit : vwhm.net
Current fruit : beyond
Good bye!
通过序列索引迭代
另外一种执行循环的遍历方式是通过索引,如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tmpList = ['未闻花名', 'vwhm.net', 'beyond']
for i in range(len(tmpList)):
print '当前内容 :', tmpList[i]
print "Good bye!"
以上实例输出结果:
当前内容 : 未闻花名
当前内容 : vwhm.net
当前内容 : beyond
Good bye!
以上实例我们使用了内置函数 len() 和 range(),
函数 len() 返回列表的长度,即元素的个数。
range返回一个序列的数。
循环使用 else 语句
在 python 中,for … else 表示这样的意思:
for 中的语句和普通的没有区别,
但是, else 中的语句会在for循环正常执行完的情况下开始执行,
(即 for 不是通过 break 跳出循环而中断的)
while … else 也是一样。
如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for num in range(8,14): # 迭代 8 到 14 之间的数字
for factor1 in range(2,num): # 根据因子迭代
if num%factor1 == 0: # 确定第一个因子
factor2 = num/factor1 # 计算第二个因子
print '%d 等于 %d * %d' % (num,factor1,factor2)
break # 跳出当前for...else循环
else: # 循环的 else 部分,只会在for正常结束后才执行
print num, '是一个质数'
以上实例输出结果:
8 等于 2 * 4
9 等于 3 * 3
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
Python break 语句
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,
即使 循环条件 不是False 或者 序列 还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句只会停止执行最深层的循环,并开始执行下一行代码。
Python语言 break 语句语法:
break
流程图:
实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Beyond': # 第一个实例
if letter == 'o':
break
print '当期字母 :', letter
var = 14 # 第二个实例
while var > 0:
print '当期变量值 :', var
var = var -1
if var == 10: # 当变量 var 等于 10 时退出循环
break
print "Good bye!"
以上实例执行结果:
当期字母 : B
当期字母 : e
当期字母 : y
当期变量值 : 14
当期变量值 : 13
当期变量值 : 12
当期变量值 : 11
Good bye!
Python continue 语句
Python continue 语句跳出本次循环,
而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
Python 语言 continue 语句语法格式如下:
continue
流程图:
实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Beyond': # 第一个实例
if letter == 'y': # 跑过输出y字符
continue
print '当前字母 :', letter
age = 15 # 第二个实例
while age > 11:
age = age -1
if age == 12:
continue
print '当前变量值 :', age
print "Good bye!"
以上实例执行结果:
当前字母 : B 当前字母 : e 当前字母 : o 当前字母 : n 当前字母 : d 当前变量值 : 14 当前变量值 : 13 当前变量值 : 11 Good bye!
实例:
可以使用Python的continue语句跳过某些循环,
只打印0-10之间的奇数:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,continue,即跳过打印语句
continue # continue语句会直接开始继续新一轮循环,其后的print()语句不会被执行
print(n)
Python pass 语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
Python 语言 pass 语句语法格式如下:
pass
实例:
# -*- coding: UTF-8 -*-
#!/usr/bin/python
# 输出 Python 的每个字母
for letter in 'Beyond':
if letter == 'o':
pass
print '这是 pass 块'
print '当前字母 :', letter
print "Good bye!"
以上实例执行结果:
当前字母 : B
当前字母 : e
当前字母 : y
这是 pass 块
当前字母 : o
当前字母 : n
当前字母 : d
Good bye!
更多实例
打印1-9三角形阵列:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for i in range(1,9): # range 是前闭后开,所以[1-8]
for k in range(1,i): # range 是前闭后开,所以[1-7]
print k,
print "\n"
以上实例输出结果:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
打印空心等边三角形:
一种4种情况需要判断:
1. 非最后一行,从列中间往两边, 对角线上的列,输出
2. 非最后一行,从列中间往两边,非对角线上的列
3. 最后一行奇数列
4. 最后一行偶数列
Python 循环嵌套
Python 语言允许在一个循环体里面嵌入另一个循环。
Python for 循环嵌套语法:
for i in sequence_1:
for j in sequence_2:
statements_1()
statements_2()
Python while 循环嵌套语法:
while expression_1:
while expression_2:
statement_1(s)
statement_2(s)
你可以在循环体内嵌入其他的循环体,
如在while循环中可以嵌入for循环,
反之,你可以在for循环中嵌入while循环。
实例:
以下实例使用了嵌套循环输出2~14之间的素数:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
i = 2
while(i < 14):
j = 2
# 素数核心算法: i/j
while(j <= (i/j)):
# 或者 if i%j == 0: break
if not(i%j): break
j = j + 1
# 循环结束后,检查j的递增情况
if (j > i/j) : print i, " 是素数"
i = i + 1
print "未闻花名 vwhm.net"
以上实例输出结果:
2 是素数
3 是素数
5 是素数
7 是素数
11 是素数
13 是素数
未闻花名 vwhm.net
更多实例
实例一:使用循环嵌套来获取14以内的质数
通过for…else来实现
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 未闻花名 vwhm.net
primeList = []
i=2
for i in range(2,14):
j=2
for j in range(2,i):
if(i%j==0):
break
# 如果未发生break,则当for循环正常结束后会来到else内的代码
else:
primeList.append(i)
print(primeList)
输出结果:
[2, 3, 5, 7, 11, 13]
实例二:使用嵌套循环实现 |> 形状