if 语句的语法如下
:if expression:
expr_true_suiteif
语句的 expr_true_suite 代码块只有在条件表达式的结果的布尔值为真时才执行, 否则将继续执行紧跟在该代码块后面的语句.
单个 if 语句可以通过使用布尔操作符 and , or 和 not实现多重判断条件或是否定判断条件
elif 是 Python 的 else-if 语句, 它检查多个表达式是否为真, 并在为真时执行特定代码块中的代码. 和 else 一样, elif 声明是可选的, 然而不同的是, if 语句后最多只能有一个 else语句, 但可以有任意数量的 elif 语句.
条件表达式(即"三元操作符")
三元运算符. ( C 是条件表达式; X 是 C 为 True 时的结果, Y 是 C 为 False 时的结果)
Python 集成的语法确定为: X if C else Y
while 是循环语句. 事实它上是一个条件循环语句. 与 if声明相比, 如果 if 后的条件为真, 就会执行一次相应的代码块. 而 while 中的代码块会一直循环执行, 直到循环条件不再为真.
用 for 循环迭代不同的序列对象
当迭代字符串时, 迭代变量只会包含一个字符(长度为 1 的字符串). 但这并不常用。在字符串里中查找字符时, 程序员往往使用 in 来测试成员关系, 或者使用 string 模块中的函数以及字符串方法来检查子字符串.
迭代序列有三种基本方法:
通过序列项迭代
>>> nameList = ['Walter', "Nicole", 'Steven', 'Henry']
>>> for eachName in nameList:
... print eachName, "Lim"
...
Walter Lim
Nicole Lim
Steven Lim
Henry Lim 我们迭代一个列表. 每次迭代, eacgName 变量都被设置为列表中特定某个元素,
另个方法就是通过序列的索引来迭代
:>>> nameList = ['Cathy', "Terry", 'Joe', 'Heather','Lucy']
>>> for nameIndex in range(len(nameList))
:... print "Liu,", nameList[nameIndex]
...Liu, CathyLiu, TerryLiu, JoeLiu, HeatherLiu, Lucy我们没有迭代元素, 而是通过列表的索引迭代.这里我们使用了内建的 len() 函数获得序列长度, 使用 range() 函数(我们将在下面详细讨论它)创建了要迭代的序列
两全其美的办法是使用内建的 enumerate() 函数
>>> nameList = ['Donn', 'Shirley', 'Ben', 'Janice'
,... 'David', 'Yen', 'Wendy']
>>> for i, eachLee in enumerate(nameList)
:... print "%d %s Lee" % (i+1, eachLee)...
1 Donn Lee
2 Shirley Lee
3 Ben Lee
4 Janice Lee
5 David Lee
6 Yen Lee
7 Wendy Lee
Python 提供了两种不同的方法来调用 range() .
完整语法要求提供两个或三个整数参数:range(start, end, step =1)
range() 会返回一个包含所有 k 的列表, 这里 start <= k < end , 从 start 到 end , k 每次递增 step . step 不可以为零,否则将发生错误
.Python 中的 break 语句可以结束当前循环然后跳转到下条语句, 类似 C 中的传统 break .常用在当某个外部条件被触发(一般通过 if 语句检查), 需要立即从循环中退出时. break 语句可以用在 while 和 for 循环中.
不管是 Python, C, Java 还是其它任何支持 continue 语句的结构化语言中, 一些初学者有这样的一个误解:continue 语句"立即启动循环的下一次迭代". 实际上, 当遇到 continue 语句时, 程序会终止当前循环,并忽略剩余的语句, 然后回到循环的顶端. 在开始下一次迭代前,如果是条件循环, 我们将验证条件表达式.如果是迭代循环,我们将验证是否还有元素可以迭代. 只有在验证成功的情况下, 我们才会开始下一次迭代.
valid = False
count = 3
while count > 0:
input = raw_input("enter password") # check for valid passwd
for eachPasswd in passwdList:
if input == eachPasswd:
valid = True
break
if not valid: # (or valid == 0)
print "invalid input"
count -= 1
continue
else:
break
这里例子结合使用了 while , for , if , break 以及 continue , 用来验证用户输入. 用户有三次机会来输入正确的密码, 如果失败, 那么 valid 变量将仍为一个布尔假( 0 ), 然后我们可以采取必要的操作阻止用户猜测密码.
Python 还提供了 pass 语句( C 中没有提供对应的语句). Python 没有使用传统的大括号来标记代码块, 有时,有些地方在语法上要求要有代码, 而 Python 中没有对应的空大括号或是分号( ; )来表示 C 语言中的 "不做任何事" , 如果你在需要子语句块的地方不写任何语句, 解释器会提示你语法错误. 因此, Python 提供了 pass 语句, 它不做任何事情 - 即 NOP , ( No OPeration , 无操作) 我们从汇编语言中借用这个概念. pass 同样也可作为开发中的小技巧, 标记你后来要完成的代码,
迭代器它们是一组数据结构,你可以利用它们的索引从 0 开始一直"迭代" 到序列的最后一个条目. 用"计数"的方法迭代序列是很简单的. Python 的迭代无缝地支持序列对象, 而且它还允许程序员迭代非序列类型, 包括用户定义的对象.迭代器就是有一个 next() 方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下一个项时, 调用迭代器的 next() 方法就可以获得它. 条目全部取出后, 会引发一个 StopIteration 异常, 这并不表示错误发生, 只是告诉外部调用者, 迭代完成不过, 迭代器也有一些限制. 例如你不能向后移动, 不能回到开始, 也不能复制一个迭代器.如果你要再次(或者是同时)迭代同个对象, 你只能去创建另一个迭代器对象
reversed() 内建函数将返回一个反序访问的迭代器. enumerate() 内建函数同样也返回迭代器.另外两个新的内建函数, any() 和 all() , 在 Python 2.5 中新增, 如果迭代器中某个/所有条目的值都为布尔真时,则它们返回值为真.
字典和文件是另外两个可迭代的 Python 数据类型. 字典的迭代器会遍历它的键(keys).语句 for eachKey in myDict.keys() 可以缩写为 for eachKey in myDict ,
Python 还引进了三个新的内建字典方法来定义迭代: myDict.iterkeys() (通过 keys 迭代), myDict.itervalues() (通过 values 迭代), 以及 myDicit.iteritems() (通过 key/value 对来迭代 ).
对一个对象调用 iter() 就可以得到它的迭代器