Python学习笔记《Python核心编程》第8章 条件和循环
2013-01-21 22:01 VVG 阅读(1207) 评论(0) 编辑 收藏 举报if 语句
由三部分组成:关键字本身,用于判断结果真假的条件表达式,以及当表达式为真或者非零时执行的代码块:
if expression:
expr_true_suite
可以通过使用布尔操作符and or not 实现多重判断条件
if not warn and (system_load >= 10):
print "WARNING:losing resources"
warn +=1
如果以个复合语句的代码块仅仅包含一行代码,那么可以写在 一行上
if make_hard_copy:send_data_to_printer()
else 语句
if expression:
expr_true_suite
else:
expr_true_suite
if passwd == user.passwd: ret_str = "password accepted" id = user.id valid = True else: ret_str = "invalid password entered....try again!" valid = False
elif(即else-if)语句 ---------python 暂不支持switch/case语句-
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_abave_suite
条件表达式(三元操作符)
X if C else Y
while 语句
while expression:
suite_to_repeat
for 语句:
for iter_var in iterable: #每次循环,iter_var迭代变量被设置为可迭代对象的当前元素,提供给语句使用
suite_to_repeat
pass 语句:
def foo_func():
pass # 可以用来先定结构,而不干扰其他代码
range()完整语法
range(start,end,step = 1) #返回一个包含所有K的列表,这里start<=k<end,k每次递增step。step不可以为0,默认为1。
range()简约语法
range(end) # start默认为0,step默认为1
range(start,end)
与序列相关的内建函数:
sorted() reversed() # 返回一个序列(列表)
enumerate() zip() # 返回迭代器 zip() 压缩两个列表。。。?
break 语句,结束当前循环然后跳到下一条语句。
continue语句:终止当前循环,并忽略剩余的语句,然后回到循环的顶端,开始下一次循环!
注:while 和 for 循环中使用else语句。在循环中使用时,else子句只在循环完成后执行,break语句会跳过else块。
迭代器和iter()函数
迭代器的工作原理:
>>> myTuple (123, 'zav', 45.33) >>> i = iter(myTuple) >>> i.next() 123 >>> i.next() 'zav' >>> i.next() 45.33 >>> i.next() Traceback (most recent call last): File "<pyshell#39>", line 1, in <module> i.next() StopIteration
字典的迭代器或遍历它的键。 for eachKey in myDict.keys() 可以简写成 for eachKey in myDict
legends = {('poe','wei'):('123','3444','34244'),('jasdlf','adsfasd'):(123,3434,343434)} for eachLegend in legends: print 'Name: %s\tOccupation: %s' % eachLegend print ' birth: %s\tDeath:%s\tALBUM:%s\n' % legends[eachLegend]
文件:文件对象生成的迭代器会自动调用readline()方法,循环可以访问文本文件的所有行。可以使用for eachLine in myFile来迭代文本文件
myFile = open('config-win.txt') for eachLine in myFile: print eachLine,
列表解析:[expr for iter_var in iterable]
核心是for循环,迭代iterable对象的所有条目。前边的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表。
[x ** 2 for x in range(10)] #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 需加中括号[]
扩展语法:[expr for iter_var in iterable if cond_expr]
这个语法在迭代时会过滤或捕获满足条件表达式cond_expr的序列成员
seq = [11,12,13,1,4,34,45,56,6,67,78,3] [x for x in seq if x%2] #[11, 13, 1, 45, 67, 3]
生成器:是特定的函数,允许你返回一个值,然后“暂停”代码的知心,稍后恢复
生成器表达(expr for iter_var in iterable if cond_expr):生成器是以个内存使用更友好的结构。
阶乘函数:
def factorial(n): if n>1: return n*factorial(n-1) else: return 1
factorial(10) # 3628800
转载请注明出处:http://www.cnblogs.com/NNUF/