首页 > 代码库 > 2.关于python的if判断,循环总结。

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

一.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]



本文出自 “reBiRTH” 博客,请务必保留此出处http://suhaozhi.blog.51cto.com/7272298/1906393

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