您的位置:首页 > 编程语言 > Python开发

Python 语言基础四_条件判断与循环

2020-06-10 04:25 393 查看

一、 if语句

if语句用来判断当某个条件成立(非0或为True)时,执行下一个语句。常与else一起使用,表示除if判断条件之外的其他情况。

if语句有三种形式:

标准的if形式

[code]if 表达式A:
语句块M

形式1表达式A用来确定程序的流程:

  • 若表达式A为真,即表达式A计算结果为”非0”或是布尔值”true”,则执行语句块M;
  • 要注意表达式A后面的冒号”:”和语句块M的缩进格式。

if…else...形式

[code]if 表达式A:
语句块Melse :
语句块N

形式2表述:

  • “if…else...”结构表达的含义是:如果…否则...
  • 在if…else...结构中,若表达式A为真,执行语句块M;否则执行语句块N。

if…elif…else...形式

[code]if 表达式A:
语句块M
elif 表达式B:
语句块N
else :
语句块O

形式3表述:

  • 用来进行多重分支的选择
  • 在if…elif…else..结构中,若表达式A为真,则执行语句块M;
  • 表达式A为‘0’或‘false’时,则进入下一个分支,计算表达式B,若B为非’0’或’true’,则执行语句块N;
  • 若所有条件都不满足,则执行语句块O。

举例:

[code] >>> num = 180
>>> if num%2 == 0:
...   print(num, "是一个偶数")
... else:
...   print(num, "是一个奇数")
...
180是一个偶数

注意:

可以有多个elif,else是可选的。elif是“else if”的缩写,对于避免过多的缩进非常有用,else与它最近的前一个if或elif匹配。

[code] >>> x = 5
>>> if x < 0:
...   print("负数")
... elif x == 0:
...   print("零")
... elif x == 1:
...   print("壹")
... else:
...   print("其它")
...
其它

注意:

由于Python严格的缩进格式,为避免出错,最好用空格键进行缩进。

二、while语句

while语句用于循环执行程序,即在某条件下,循环执行某段程序。while循环是最简单的循环,基本格式如下:

[code]while 表达式A:
语句块M

表述:

  • 若表达式A为真(true),则执行语句块M,其中会修改表达式A中的循环变量;
  • 然后再次计算表达式A并根据再次计算的结果,决定是否再次执行语句块M;
  • 如此往复循环,直⾄计算表达式A的值为假(false);
  • 使用格式上要注意表达式A后面的冒号“:”和语句块M的缩进格式;
  • 若循环体执行过程中出现break语句则循环中止,若循环是嵌套的,那么break只中止所在层的循环。

while循环几种使用方式:

1.确定循环次数,利用循环变量的方式

[code]>>> i = 5
>>> while i > 0:
...   print(i)
...   i = i-1
...
5
4
3
2
1

2.循环次数不定,直至表达式为‘0’或‘flase’

[code]>>> # 输入一个数,求其除了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终止循环的流程

[code]>>> # 求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语句用于循环执行程序,并按序列中的项目(一个列表或一个字符串)顺序迭代。for语句经常用来遍历一个集合中的所有元素。

1. 用for遍历列表(遍历字符串)

[code]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的执行次数将由字符串的字符个数决定的。

[code]>>> 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循环中增加条件判断。

[code]>>> 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()

[code]for rec in range(N)
循环体lb

这种形式的循环是一个变体,因为函数

range(N)
的意义在于生成一个0到N-1的数字迭代器。也可以得到其它的数字范围的循环:
for i in range(N,M)
的范围是从N到M-1,其中i的取值范围是[N,M-1]。

[code]>>> for i in range(3):
...     print(i)
...
0
1
2

本质上,

range()
函数返回的是一个可迭代对象,这种方式会节省很多内存,若需要列表对象,可以通过list()函数将可迭代对象转成列表。

[code] >>> for i in range(8,11):
...     print(i)
...
8
9
10

range(a, b, c)
指定第3个参数,该参数用于定义每次循环的的增量(步长),含义是从a开始,步长为c,结束值小于b。若c为负值,则结束值大于b。

[code]>>> 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
语句

[code]>>> for x in range(2, 10):
...   if x == 5:
...     break
...   print(x)
...
2
3
4

break
语句用于退出
for
循环。

[code]>>> for x in range(2, 10):
...   if x == 5:
...     continue
...   print(x)
...
2
3
4
6
7
8
9

continue
语句用于退出
for
语句的当前循环,进入下一次循环。

4.循环中的pass语句

pass
语句表示空语句,不做任何事情,一般用作占位语句,用来保持程序结构的完整性。

[code]>>> for ch in 'hello':
...   if ch == 'l':
...     pass
...     print("这是 pass")
...   print("当前字符", ch)
...
当前字符: h
当前字符: e
这是 pass
当前字符: l
这是 pass
当前字符: l
当前字符: o
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: