Python 的条件和循环语句以及与它们相关的部分

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() 就可以得到它的迭代器


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值