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)]
>>>
代码中执行顺序: