条件判断与循环
if语句用来判断当某个条件成立(非0或为True)时,执行下一个语句。常与else一起使用,表示除if判断条件之外的其他情况。
if语句有三种形式:
标准的if形式
if 表达式A:
语句块M
形式1表达式A用来确定程序的流程:
if…else...形式
if 表达式A:
语句块M
else :
语句块N
形式2表述:
if…elif…else...形式
if 表达式A:
语句块M
elif 表达式B:
语句块N
else :
语句块O
形式3表述:
举例:
>>> num = 180
>>> if num%2 == 0:
... print(num, "是一个偶数")
... else:
... print(num, "是一个奇数")
...
180是一个偶数
注意:
可以有多个elif,else是可选的。elif是“else if”的缩写,对于避免过多的缩进非常有用,else与它最近的前一个if或elif匹配。
>>> x = 5
>>> if x < 0:
... print("负数")
... elif x == 0:
... print("零")
... elif x == 1:
... print("壹")
... else:
... print("其它")
...
其它
注意:
由于Python严格的缩进格式,为避免出错,最好用空格键进行缩进。
while语句用于循环执行程序,即在某条件下,循环执行某段程序。while循环是最简单的循环,基本格式如下:
while 表达式A:
语句块M
表述:
while循环几种使用方式:
1.确定循环次数,利用循环变量的方式>>> i = 5
>>> while i > 0:
... print(i)
... i = i-1
...
5
4
3
2
1
2.循环次数不定,直至表达式为‘0’或‘flase’
>>> # 输入一个数,求其除了1和本身之外的所有因子
>>> i = 0
>>> j = 2
>>> s = '因子是:'
>>> i = int(input("输入一个自然数,求出它所有的因子:"))
输入一个自然数,求出它所有的因子:9
>>> while j < i:
... if i % j == 0:
... s +=str(j) + ','
... j +=1
...
>>> print(s)
因子是:3,
以上程序输入变量i的值以后,求出i的所有因子。其特点是循环开始时并不知道循环的次数,一切由条件决定。
3.嵌套和中止循环循环嵌套,并利用break终止循环的流程
>>> # 求20以内的所有素数
>>> i = 2
>>> while i < 21: # 表示求素数的范围:2-20。
... j = 2 # 对于每个i因子,都从2开始计算。
... while j < i/2: # 如果在2-i/2的范围内有将i整除的数,则i不是素数。
... if i % j == 0:
... break # 若已整除,则没必要测试其它因子,终止循环。
... j += 1
... if j >= i/2: # 若针对j的循环进行完毕,说明在2 - i/2的范围内无因子,则i是素数。
... print(str(i) + ' 是素数')
... i += 1
...
2 是素数
3 是素数
4 是素数
5 是素数
7 是素数
11 是素数
13 是素数
17 是素数
19 是素数
需要注意的是程序中的:if j>=i/2:
和 print(str(i) + ' 是素数')
, 这两句代码实际是对循环whilej<i/2:
中条件再次利用,若循环正常执行完毕,则j的值必然大于等于i/2,只有在while j<i/2:
循环过程中执行了break
,那么j的值将小于i/2。
for语句用于循环执行程序,并按序列中的项目(一个列表或一个字符串)顺序迭代。for语句经常用来遍历一个集合中的所有元素。
1. 用for遍历列表(遍历字符串)for item in my_list
循环体LB
for ch in my_str
循环体SB
my_list是一个列表,按元素索引顺序将元素依次赋值给item,那么my_list列表中有N个元素,则for的循环体LB也将执行N次,同时,可以利用item在循环体中遍历my_list。my_str是一个字符串,循环体SB的执行次数将由字符串的字符个数决定的。
>>> words = ['www', 'ischoolcode', 'cn']
>>> for w in words:
... print(w, len(w))
...
www 3
ischoolcode 11
cn 2
>>> word = 'code'
>>> for ch in word:
... print('字符', ch)
...
字符 c
字符 o
字符 d
字符 e
如果需要在for循环内修改迭代的顺序或条件,可以在for循环中增加条件判断。
>>> words = ['www', 'ischoolcode', 'cn']
>>> for w in words:
... if len(w) < 7:
... print(w)
...
www
cn
>>> word = 'code'
>>> for ch in word:
... if ch == 'd':
... break
... print('字符', ch)
...
字符 c
字符 o
2. 使用range()函数
如果你需要遍历一系列的数字,可以使用内置函数range()
for rec in range(N)
循环体lb
这种形式的循环是一个变体,因为函数range(N)
的意义在于生成一个0到N-1的数字迭代器。也可以得到其它的数字范围的循环:for i in range(N,M)
的范围是从N到M-1,其中i的取值范围是[N,M-1]。
>>> for i in range(3):
... print(i)
...
0
1
2
本质上,range()
函数返回的是一个可迭代对象,这种方式会节省很多内存,若需要列表对象,可以通过list()函数将可迭代对象转成列表。
>>> for i in range(8,11):
... print(i)
...
8
9
10
range(a, b, c)
指定第3个参数,该参数用于定义每次循环的的增量(步长),含义是从a开始,步长为c,结束值小于b。若c为负值,则结束值大于b。
>>> for i in range(1,10,3):
... print(i)
...
1
4
7
>>> for i in range(10,0,-3):
... print(i)
...
10
7
4
1
3.循环中的break
语句和continue
语句
>>> for x in range(2, 10):
... if x == 5:
... break
... print(x)
...
2
3
4
break
语句用于退出for
循环。
>>> for x in range(2, 10):
... if x == 5:
... continue
... print(x)
...
2
3
4
6
7
8
9
continue
语句用于退出for
语句的当前循环,进入下一次循环。
pass
语句表示空语句,不做任何事情,一般用作占位语句,用来保持程序结构的完整性。
>>> for ch in 'hello':
... if ch == 'l':
... pass
... print("这是 pass")
... print("当前字符", ch)
...
当前字符: h
当前字符: e
这是 pass
当前字符: l
这是 pass
当前字符: l
当前字符: o
博文最后更新时间: