java程序员的python之路(条件,循环和迭代器)

来源:互联网 发布:淘宝分销商招募书 编辑:程序博客网 时间:2024/06/18 18:32

前一篇文章简单介绍了一下python的数据类型,包括,数字,字符串,列表,元组,集合和字典。以及这些类型的基本用法。这一章介绍一个python的条件控制,循环和迭代器。

条件控制

python条件控制的基本结构如下:

    if condition1:        code_segment    elif condition2:        code_segment    else:        code_segment

需要说明的是,在java中,代码块是用一对大括号括起来的,而在python中,代码块是根据缩进来确定的。也就是同一个代码块必须拥有相同的缩进,这就严格的控制了代码的整洁。
从上面的结构我们看到,python的条件控制是if + 条件表达式 + 冒号 + 相同缩进的代码块。
看下面的代码:

    a = 1    b = 1    if a == b:        print("if")        print("a等于b")    else:        print("else")    print("a不等于b") 

输出结果如下:

    if    a等于b    a不等于b

从输出我们看到,最后一行被输出了,因为最后一行和倒数第二行不是同一个代码块(缩进不同),所以最后一行不受else控制。修改代码如下:

a = 1b = 1if a == b:    print("if")    print("a等于b")else:    print("else")    print("a不等于b") 

输出结果:

ifa等于b

这才是我们要的结果,所以python的代码一定要注意缩进。
我们继续讨论一下,关系表达式,什么是关系表达式? 凡是能返回一个True和False结果的,就叫关系表达式:也就是说python的条件操作符,成员运算发,以及身份运算符都可以作为关系表达式,一个函数返回bool类型也可以作为关系表达式。再看一段简单的代码:

a = 1b = 1#关系操作符if a == b:    print("a等于b")#身份运算符if a is b:    print("a是b")else:    print("a不是b")#函数(之后详细介绍函数)def func():    return Trueif func():    print("func")

输出结果如下:

    a等于b    a是b    func

if嵌套

顾名思义就是多层if判断语句,如下所示:

a = 1b = 1#关系操作符if a == b:    print("a等于b")    if a == b:        print("a等于b")        if a == b:            print("a等于b")        else:            print("a不等于b")    else:        print("a不等于b")else:    print("a不等于b")

输出结果如下:

a等于ba等于ba等于b

循环

循环是让代码块多次执行的结构。

while循环

python中没有do while循环,while循环的基本结构如下:

while 条件表达式:    code_segment

下面我们来计算100之内自然数的和:

i = 0sum = 0;while i <=  100:    sum += i    i = i +1print(sum)    

输出结果如下:

5050

while else循环

结构如下:

while 条件表达式:    code_segmentelse:    code_segment    

在循环结束的时候,执行else中的代码块,代码如下:

i = 0sum = 0;while i <=  100:    sum += i    i = i +1else:    print("i > 100")print(sum)    

输出结果如下:

i > 1005050

for循环

for循环一般用来遍历一个序列,比如字符串,列表和元组,结构如下:

for <variable> in <sequence>:    code_segment        

重写100之内的自然数之和,代码如下:

#使用range函数产生一个0到100的自然数序列sum = 0for i in range(101):    sum += iprint(sum)   

输出结果如下:

5050

for else循环

结构如下:

for <variable> in <sequence>:    code_segment    else:    code_segment 

代码如下:

#使用range函数产生一个0到100的自然数序列sum = 0for i in range(101):    sum += ielse:    print("序列遍历结束")print(sum)    

输出如下:

序列遍历结束5050

嵌套循环以及continue和break在循环中的使用。

我们使用嵌套循环来实现一个乘法表,代码如下:

for i in range(1,10):    for j in range(1,i+1):        print("%i*%i=%i " % (j,i,i*j),end="")    else:        print("")#换行

输出结果如下:

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

现在我们想去掉第5列的输出,怎么办呢?,使用continue可以办到,修改代码如下:

for i in range(1,10):    for j in range(1,i+1):        if j == 5:            continue;        print("%i*%i=%i " % (j,i,i*j),end="")    else:        print("")#换行

输出结果如下:

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 1*6=6 2*6=12 3*6=18 4*6=24 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 6*9=54 7*9=63 8*9=72 9*9=81 

我们看到,第5列已经消失了,现在我们想去掉第5列之后所有的列,就需要使用break了,break后else中的代码也不会执行,所以修改代码如下:

for i in range(1,10):    for j in range(1,i+1):        if j == 5:            break;        print("%i*%i=%i " % (j,i,i*j),end="")    print("")#换行

输出结果如下:

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 1*6=6 2*6=12 3*6=18 4*6=24 1*7=7 2*7=14 3*7=21 4*7=28 1*8=8 2*8=16 3*8=24 4*8=32 1*9=9 2*9=18 3*9=27 4*9=36 

总的来说,continue是跳过本次循环,继续之后的循环。而break是跳过本次和之后所有的循环。continue和break之后影响当前循环体,不会跳过外边嵌套的循环体。

pass语句

pass语句是一个空语句,不做任何操作,只是为了保持代码的完整性。
代码如下:

for i in range(1,10):    for j in range(1,i+1):        if j == 5:            pass;            print("pass块 ",end="")        print("%i*%i=%i " % (j,i,i*j),end="")    else:        print("")#换行

输出结果如下:

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 pass块 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 pass块 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 pass块 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 pass块 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 pass块 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器:
代码如下:

list = [1,2,3,4,5,6]it = iter(list)while True:    try:        print(next(it))    except StopIteration:        pass 

输出结果如下:

123456
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机从美国寄回中国被海关扣怎么办 摩托车新买的后悔了想卖怎么办? 淘宝单号输错了怎么办运费险 在淘宝卖东西快递单号输错了怎么办 淘宝买东西签收后发现坏了怎么办 摩托车购车发票写了别人名字怎么办 新领的发票跟电脑对不上号怎么办 淘宝未发货退款卖家拒绝怎么办 在超市买东西把票丢了不让出怎么办 在淘宝上买东西付款不发货怎么办 买家拍下商品卖家拒绝发货怎么办 没有中文标签被投诉到工商局怎么办 淘宝申请退款卖家强制发货怎么办 1688卖家交易不小心关闭怎么办 拼多多两天不发货怎么办自动退款吗 在家里放的东西找不到了怎么办 在家里烧东西烟太大了怎么办 转转上买的二手东西有问题怎么办? 大巴车过虎门大桥错走小车道怎么办 pe高压膜中间松两边紧怎么办? 穿着浅口的高跟鞋走路老是掉怎么办 五吧同城模特兼职被骗了怎么办 华为手机充电玩黑屏怎么办教学视频 衣服肩膀被衣架撑变形了怎么办 货已经安到客户家客户不付款怎么办 微商卖家不给退货不给换货怎么办啊 淘宝卖家已签收退货却不退款怎么办 申请换货卖家收到货不给换怎么办 我买了个机器想退货怎么办 卖家要求退回去又拒收怎么办 拼多多48小时还不发货怎么办 退货退款单号填错了退不了款怎么办 淘宝退货退款快递单号填写错怎么办 蘑菇街退货忘记填快递单号了怎么办 您尝试购买的项目已停止供货怎么办 oppo新手机搬家搬了一半怎么办 开手机店手机卖不出去怎么办 京东买的东西误按签收了怎么办 小米5x充电宝充电自动断电怎么办 小米2s开不了机怎么办充电闪红灯 寄快递写错地址但已经发货了怎么办