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

2.关于python的if判断,循环总结。

2017-03-14 16:28 501 查看
一.if判断。
if判断的主要作用就是根据指定的条件表达式,做出不同的动作,操作不同的代码。

if判断大致可以分为三种,分别是单分支,双分支,多分支。
1.单分支if语句。
python中的单分支if语句格式如下:
if 表达式:
执行的代码

下面是例子:

num = 10
if num == 10: (当num变量中的值等于10,条件为真,执行下面的print “ok”代码。)
print 'ok'
当num变量不等于10的时候,什么都不会执行。
num = 1300000
if num == 10:
print 'ok'
简单的总结下,就是说,单分支if语句就是,条件表达式为True时,执行下面的代码,如果为False,则什么都不执行。

2.双分支if语句(if+else)。

双分支if语句就是,判断一个条件表达式,如果这个表达式为True执行一种代码,如果表达式为False,执行else下的代码。
格式如下:
if 条件表达式:
条件表达式为True时,执行的代码。

else:
条件表达式为False时,执行的代码。

例如:
num = 1300000
if num == 10: (当num等于10的时候,执行print “ok”,如果不等于10,执行print "error!")
print 'ok'
else:
print 'error!'

error!

3.多分支if 语句(if + elif+elif.......+else)。
多分支语句,首先会判断一个条件表达式,如果表达式为True执行一种代码,一旦不为真,则继续判断第二个条件表达式使用elif做开头,第二个条件表达式是否为真,如果第二个条件表达式为真,则执行第二个条件表达式下面的代码,如果第二个条件表达式也不为真,则继续找下面的elif 去找第三个条件表达式.....以此类推,如果后面没有其他表达式了,直接执行else下面的代码(else可以不写)。
格式如下:
if 条件表达式1:
条件表达式1为真时执行的代码。
elif 条件表达式2: #(当条件表达式1不为真时,会检查条件表达式2)
条件表达式2为真时执行的代码。
elif 条件表达式3: #(同理,当上面的条件表达式2不为真时,会检查条件表达式3)
条件表达式3为真时执行的代码。

elif .......................
else:
当以上所有的条件表达式全都为False时,执行的代码。

4.if语句的总结。
4.1 在if判断的表达式中,可以使用 is , is not, not, and,or 等逻辑运算符。
4.2 当使用多重表达式的时候,可以使用()括号来指定优先判断的顺序,当然,括号还可以增加条件表达式的可读性。

4.3一个if判断最多只有一个else但是可以有多个elif。

最后在补充一点关于条件表达式的知识点。
所有的标准对象,都可以用于布尔值的测试,同类型的对象都可以比对大小。
还有就是,以下对象的布尔值都等于False!!需要特别注意!
None,False,0,0.0+0.0j, “ ”(空字符串),[ ]空列表,()空元组,{}空字典。
以上的对象都为False。

5.三元表达式。
这个没啥好解释的,和if判断特别像,举个例子就明白了。
print "ok" if 10000 < 100 else "error"

error

print "ok" if 1 < 100 else "error"

ok

二.while循环。
while循环就是,以满足某个条件为前提,重复的去做某事。
while循环包含了两种循环模式,一种是死循环(无限循环),另外一种是条件计数循环。
这里的条件,就是前面说的条件表达式。
在说这两种while循环之前,先说下while循环的语法,下面是语法格式:
while 条件表达式:
条件为真时执行的代码。

#(当条件为真时,下面的这段代码会一直执行,直到条件为假,循环结束。)

1.while计数循环的示例。
举个简单的例子,现在需要利用while循环打印出1~10的数字。
a = 1
while a < 11:
print a
a += 1
1
2
3
4
5
6
7
8
9
10

2.死循环,一直循环,直到海枯石烂。
while True:
print “ok”

#True是布尔值,代表真,条件为真,这个循环就会一直执行下去,直到break跳出或者程序终止。
死循环还可以这样用。

tag=True
count=0
while tag:
if count == 9:
tag=False
print 'the loop is %s' %(count)
count+=1

3.关于while循环的else部分!
python 中的while循环和其他编程语言的while循环有一些不同,这个不同之处就是python中的while可以和if一样,支持else!
count=0
while (count < 9):
count+=1
if count == 3:
print '跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环'
continue
print'the loop is %s' %(count)
else:
print 'end'

执行一遍上面的代码,就可以看出,当while后面的条件表达式为假之后,else代码块中的代码,
print 'end' 就被执行了。
也就是说,循环不被break打断,即正常结束,就会执行else后代码块。
如果循环被break打断,else后面的代码块是不会执行的。

三.for循环。
for 循环和while 循环有着本质上的不同,for循环是一种迭代循环机制,而while循环是种条件循环。

如果要为一个集序列或者其他可迭代对象进行迭代,让序列中的每一个元素都做一遍相同的操作,使用for循环最合适不过。

for 循环几本语法如下:
for 迭代变量 in 迭代器或其他可迭代序列:
所要执行的代码块

假如有一个列表,现在需要循环一个列表中的内容,就可以使用for循环来做。
names = ["Leo","suhaozhi","ayumi"]
for i in names:
print "my name is %s" %(i)

my name is Leo
my name is suhaozhi
my name is ayumi

还可以使用索引进行迭代。
names = ["Leo","suhaozhi","ayumi"]
for i in range(len(names)):
print "my name is %s" %(names[i])

还可以使用enumerate函数显示每个元素的索引,序号。

names = ["Leo","suhaozhi","ayumi"]
for i,n in enumerate(names,1):
print "index:%s name:%s" %(i,n)

index:1 name:Leo
index:2 name:suhaozhi
index:3 name:ayumi

上面简单演示了,列表在for循环的迭代方法,元组和字符串就没必要说了,迭代的方法和列表一模一样。

下面需要重点说说如何使用for循环去遍历字典。

四.使用for循环遍历字典。
直接把字典扔进for循环里循环,只能拿到这个字典中所有的key,并不能连同value一起被遍历,我们可以试试看。
d1 = {'k1':'v1','k2':'v2','k3':'v3'}
for i in d1:
print i

k3
k2
k1

如果要是同时需要同时对一个字典的key和value进行遍历可以试试字典中的items方法和iteritems方法。
d1 = {'suhaozhi':'13333333333','leo':'15555555555','eric':'11111111111'}
for n,p in d1.items():
print "name:%s phone_number:%s" %(n,p)

name:suhaozhi phone_number:13333333333
name:eric phone_number:11111111111
name:leo phone_number:15555555555

然而。。。在数据量特别大的情况下,特别不推荐是哟哦那个items方法进行迭代,因为效率实在太低了!!!下面这种通过迭代器来迭代,代码的执行效率会更高!!
d1 = {'suhaozhi':'13333333333','leo':'15555555555','eric':'11111111111'}
for n,p in d1.iteritems():
print "name:%s phone_number:%s" %(n,p)
name:suhaozhi phone_number:13333333333
name:eric phone_number:11111111111
name:leo phone_number:15555555555

列表中的items和iteritems最大的区别就是,items方法返回的是个列表,字典中的每个键值对作为这个列表中的一个元组,而iteritems返回的则是个迭代器,只要去遍历,从迭代器中依次生成。

最后补充一下,在python中for循环也是和while循环一样,支持else语法的,只要所有的内容循环结束,不被break打断,else中的代码块就会被执行,这一点和while是一样的。

五.关于break和continue。
1.break 用于彻底结束循环(仅限于本层),跳出程序中所有的循环,如果循环下面还有其他代码,其他的代码会正常执行,不会影响到循环外的代码。

记得刚开始接触python编程的时候,犯了个特别低级的错误,就是总把exit()当break用....现在才明白,exit和break的区别,一种是彻底退出python程序,另外一种则是跳出本层循环!!只是本层!!
现在要去循环一个列表,列表当中有5个数字,循环到3时,就不在向下遍历,输出一个end字符。
l1 = [1,2,3,4,5]
l1 = [1,2,3,4,5]
for n in l1:
print n
if n == 3:
break
print "end"

输出结果如下:
1
2
3
end

输出到3之后,break跳出本层循环,然后输出了end。

2.continue 跳出本次循环,跳到下一轮循环的开始处。(这个countinue在使用while循环的时候用的特别多。)
有一个列表现在需要循环,列表当中有5个数字,for循环遍历到每个数字的时候输出到屏幕一次,到数字3的时候跳过,这种情况就可以使用continue来实现。
l1 = [1,2,3,4,5]
for n in l1:
if n == 3:
continue
else:
print n
输出结果如下:

1
2
4
5

六.列表推导式,轻量级循环。
个人理解python中的轻量推导式就是用来生成列表的轻量级for循环。

如果只想打印出那些在10以内能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成:
print [n * n for n in range(10) if n % 3 == 0]

[0, 9, 36, 81]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  for python while