Python:条件和循环

1.Python中的if子句看起来十分熟悉,他有三部分组成,关键字本身,用于判断结果真假的条件表达式,以及当表达式为真或者非零时执行的代码块。

if语句的语法如下:

if expression:
    expr_true_suit

①.多重条件表达式

if not warn and (system_load>=10):
    print "WARNING:losing resources"
    warn+=1

②.单一语句的代码块

if make_hard_copy:send_data_to_printer()

像上边的当行语句是合法的,但这样会使得代码更难阅读。

else语句与if语句的语法:

if expression:
    expr_true_suite
else:
    expr_false_suite

样例代码

balance=input("Please input:")
if balance > 0:
    print "hello"
else:
    print "goodbye"

2.elif(即else-if)语句
样本demo:


score=80
if score>90:
    print "A"
elif score>80:
    print "B"
elif score>60:
    print 'C'
else:
    print 'D'

3.while语句
①.一般语法:

while expression:
    suite_to_repeat

while循环的suite_to_repeat子句会一直循环执行,直到expression值为布尔假。

②.计数循环

count=0
while(count<9):
    print count
    count+=1

③、无限循环
语法:

while True:
    expression
小心使用这个这个语法,因为有可能会陷入死循环。在服务器-客户端通信这一方向使用更多。

4.for语句
语法:

for iter_var in iterable:
    suit_to_repeat

①.用于序列

seq=[1,2,3,4,5]
for i in seq:
    print i,   #逗号表示取消print自带的换行符
结果:
1 2 3 4 5
#通过索引迭代
seq=[1,2,3,4,5]
for i in range(len(seq)):
    print seq[i],   
 结果: 
1 2 3 4 5  
#通过项和索引迭代
seq=[1,2,3,4,5]
for index,value in enumerate(seq):
    print "seq[%d]=%d"%(index,value),

结果:
seq[0]=1 seq[1]=2 seq[2]=3 seq[3]=4 seq[4]=5

②.用于迭代器类型:
用for循环访问迭代器和访问序列的方法差不多,唯一的区别是for语句会为你做一些额外的事情,迭代器并不代表循环条目的集合

迭代器有一个next()方法,调用后返回下一个条目。所有条目迭代完成后,迭代器会引发一个StopIteration异常告诉程序循环结束

4.range()内建函数
完整语法:range(start,end,step=1)

>>> range(2,19,3)
[2, 5, 8, 11, 14, 17]
>>>

>>> range(2,19)   #start=2,end=19返回一个2到18组成的列表,不包含最后一个元素
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

>>> range(19)    #end=19 返回0到18所组成的列表
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
>>>

5.xrange()内建函数
xrange()类似range(),不过当你有一个很大范围列表的时候,xrange()可能更为合适,因为他不会在内存里创建列表的完整拷贝。他只被用在for循环中,在for循环外没有意义。


>>> for i in xrange(19):
...     print i,
...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

6.与序列相关的内建函数

>>> seq=range(2,10)
>>> seq
[2, 3, 4, 5, 6, 7, 8, 9]

>>> reversed(seq)  
<listreverseiterator object at 0x00000000031B2390>
>>> [i for i in reversed(seq)]
[9, 8, 7, 6, 5, 4, 3, 2]

>>> [(index,value) for index,value in enumerate(seq)]
[(0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7), (6, 8), (7, 9)]
>>>


>>> seq
[2, 3, 4, 5, 6, 7, 8, 9]
>>> seq1=[22,44,5,666,77]
>>> zip(seq,seq1)     
[(2, 22), (3, 44), (4, 5), (5, 666), (6, 77)]
>>>

7.break语句与continue语句
braek:退出当前循环体
continue:程序遇到continue时,程序会终止当前循环,并忽略剩下的语句,然后回到循环顶端,再开始下一次迭代。

8.pass语句
pass语句说白了就是一个占位符。。提醒你这个地方还有东西要写,或者就是这个地方什么也不做。

def foo():
    pass    #占楼,等后面补全

if user=='admin':
    print "Bingo"
else:
    pass   #啥也不做

9.迭代器和iter()函数
迭代器有一个next()方法的对象,而不是通过索引来计数。
①.使用迭代器

>>> my=['xyz',123,45.64]
>>> my
['xyz', 123, 45.64]
>>> i=iter(my)  #对一个对象调用iter()就能得到它的迭代器
>>> i.next()
'xyz'
>>> i.next()
123
>>> i.next()
45.64
>>> i.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

#for循环会自动调用迭代器的next()方法
>>> for i in my:
...     print i,
...
xyz 123 45.64
>>>

②.字典
字典的迭代器会遍历它的键(key)

>>> d={'a':1,'b':3,'c':5}
>>> for i in d:
...     print i,
...
a c b
>>>
#另外python还引入了dict.iterkeys(),dict.itervalues(),dict.iteritems()

>>> d_iter=d.itervalues()
>>> d
{'a': 1, 'c': 5, 'b': 3}
>>> d_iter
<dictionary-valueiterator object at 0x000000000332EEF8>
>>> d_iter.next()
1
>>>
>>> for i in d_iter:
...     print i,
...
1 5 3
>>>

③.文件
文件对象生成的迭代器会自动调用readline()方法。

>>>f=open('test.txt','r')
>>>for eachline in f:
...    print eachline,
...
font:123
szie:2323
>>>f.close()

10.列表解析
语法:[expr for iter_var in iterable]
这个语句核心就是for循环,他迭代了iterable的所有条目,前边的expr应用于序列的每个成员,最后的结果值是给表达式产生的列表。

>>> [value*2 for value in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>
#类似于:
>>> for i in range(10):
...     print i*2,
...
0 2 4 6 8 10 12 14 16 18
>>>

扩展版语法:[expr for iter_var in iterable if cond_expr]

>>> [value for value in range(20) if value%2==0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
"value%2==0这个成立才会向列表中加入value的值,否则跳过,所以生成的是偶数的列表"

#升级版
>>>
>>> [(x+1,y+1) for x in range(3) for y in range(5)]
>
"从左向右执行,类型与
     >>> for x in range(3):
     ...     for y in range(5):
     ...             print (x+1,y+1),
     ...
    结果: (1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (2, 1) (2, 2) (2, 3) (2, 4)  (2, 5) (3, 1) (3,2) (3, 3) (3, 4) (3, 5)
类似
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5),(3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]
>>>

代码中执行顺序:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值