欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python入門篇之條件、循環

系統 1621 0

1.if語句

Python 中的if子句看起來十分熟悉. 它由三部分組成: 關鍵字本身, 用于判斷結果真假的條件表達式, 以及當表達式為真或者非零時執行的代碼塊.
if 語句的語法如下:
if expression:
  expr_true_suite
if 語句的 expr_true_suite代碼塊只有在條件表達式的結果的布爾值為真時才執行, 否則將繼續執行緊跟在該代碼塊后面的語句.

(1)多重條件表達式

單個if語句可以通過使用布爾操作符and,or和not實現多重判斷條件或是否定判斷條件.

復制代碼 代碼如下:

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

(2)單一語句的代碼塊

如果一個復合語句(例如 if 子句, while 或 for 循環)的代碼塊僅僅包含一行代碼, 那么它可以和前面的語句寫在同一行上:
if make_hard_copy: send_data_to_printer()

盡管它可能方便, 但這樣會使得代碼更難閱讀, 所以我們推薦將這行代碼移到下一行并合理地縮進.

2.else語句

Python提供了與if語句搭配使用的else語句.如果if語句的條件表達式的結果布爾值為假,那么程序將執行else語句后的代碼.它的語法你甚至可以猜到:

復制代碼 代碼如下:

if expression:
  expr_true_suite
else:
  expr_false_suite

if passwd == user.passwd:
??? ret_str = "password accepted"
??? id = user.id valid = True
else:
??? ret_str = "invalid password entered... try again!"
??? valid = False

3.elif(即else-if)語句

elif是Python的else-if語句,它檢查多個表達式是否為真, 并在為真時執行特定代碼塊中的代碼. 和else一樣, elif聲明是可選的, 然而不同的是: if語句后最多只能有一個else語句, 但可以有任意數量的elif語句.

復制代碼 代碼如下:

if expression1:
  expr1_true_suite
elif expression2:
  expr2_true_suite
elif expressionN:
  exprN_true_suite
else:
  none_of_the_above_suite

4.條件表達式(即"三元操作符")

Python 2.5 集成的語法確定為: X if C else Y .

復制代碼 代碼如下:

>>> x, y = 4, 3
>>> smaller = x if x < y else y
>>> smaller
3

5.while語句

Python的while是本章我們遇到的第一個循環語句. 事實它上是一個條件循環語句.與if聲明相比,如果if后的條件為真, 就會執行一次相應的代碼塊. 而while中的代碼塊會一直循環執行, 直到循環條件不再為真.
while 循環的語法如下:

復制代碼 代碼如下:

while expression:
  suite_to_repeat

>>> x=1
>>> while x <=100:
??? print x
??? x+=10

6.for語句

Python提供給我們的另一個循環機制就是for語句. 它提供了Python中最強大的循環結構.它可以遍歷序列成員, 可以用在列表解析和生成器表達式中,它會自動地調用迭代器的next()方法,捕獲StopIteration異常并結束循環(所有這一切都是在內部發生的).和傳統語言中的for語句不同, Python的for更像是 shell 或是腳本語言中的foreach循環.

for循環會訪問一個可迭代對象(例如序列或是迭代器)中的所有元素, 并在所有條目都處理過后結束循環.它的語法如下:

復制代碼 代碼如下:

for iter_var in iterable:
  suite_to_repeat

1.用于序列類型

復制代碼 代碼如下:

>>> for c in 'names':
??? print 'current letter: ', c

current letter:? n
current letter:? a
current letter:? m
current letter:? e
current letter:? s

迭代序列有三種基本方法:

1.通過序列項迭代:

復制代碼 代碼如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for eachName in namelists:
???   print eachName, 'Lim'
???
henry Lim
john Lim
steven Lim

2.通過序列索引迭代:

復制代碼 代碼如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for nameindex in range(len(namelists)):
??? print 'Liu, ', namelists[nameindex]

Liu,? henry
Liu,? john
Liu,? steven

3.使用項和索引迭代:

兩全其美的辦法是使用內建的 enumerate() 函數, 它是 Python 2.3 的新增內容. 代碼如下:

復制代碼 代碼如下:

>>> namelists = ['henry', 'john', 'steven']
>>> for i, eachLee in enumerate(namelists):
??? print "%d %s Lee" % (i+1, eachLee)
???
1 henry Lee
2 john Lee
3 steven Lee

2.用于迭代器類型

迭代器對象有一個 next() 方法,調用后返回下一個條目. 所有條目迭代完后, 迭代器引發一個 StopIteration 異常告訴程序循環結束. for 語句在內部調用 next() 并捕獲異常.

3.range()內建函數

內建函數 range() 可以把類似 foreach 的 for 循環變成你更加熟悉的語句

Python 提供了兩種不同的方法來調用range().完整語法要求提供兩個或三個整數參數:
range(start, end, step =1)
range() 會返回一個包含所有k的列表,這里start <= k < end ,從start到end, k每次遞增step. step不可以為零,否則將發生錯誤.

復制代碼 代碼如下:

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

如果只給定兩個參數,而省略step,step就使用默認值1.

復制代碼 代碼如下:

>>> range(3, 7)
[3, 4, 5, 6]

range() 還有兩種簡略的語法格式:
range(end)
range(start, end)

4.xrange()內建函數

xrange()類似range(),不過當你有一個很大的范圍列表時, xrange()可能更為適合, 因為它不會在內存里創建列表的完整拷貝. 它只被用在for循環中, 在for循環外使用它沒有意義。同樣地,你可以想到,它的性能遠高出range(),因為它不生成整個列表。

5.與序列相關的內建函數

sorted(), reversed(), enumerate(), zip()

sorted() 和 zip() 返回一個序列(列表), 而另外兩個函數 reversed() 和 enumerate() 返回迭代器(類似序列)

7.break語句

Python中的 break 語句可以結束當前循環然后跳轉到下條語句, 類似 C 中的傳統 break.常用在當某個外部條件被觸發(一般通過if 語句檢查),需要立即從循環中退出時break 語句可以用在 while 和 for 循環中.

8.continue語句

Python里的continue語句和其他高級語言中的傳統continue并沒有什么不同.它可以被用在while和for循環里.while循環是條件性的, 而for循環是迭代的, 所以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 ), 然后我們可以采取必要的操作阻止用戶猜測密碼.

9.pass語句

Python提供了pass語句,它不做任何事情 - 即NOP,(No OPeration ,無操作)我們從匯編語言中借用這個概念.pass同樣也可作為開發中的小技巧,標記你后來要完成的代碼,例如這樣:

復制代碼 代碼如下:

def foo_func():
??? pass
#或是
if user_choice == 'do_calc':
??? pass else:
??? pass

這樣的代碼結構在開發和調試時很有用, 因為編寫代碼的時候你可能要先把結構定下來,但你不希望它干擾其他已經完成的代碼. 在不需要它做任何事情地方, 放一個pass 將是一個很好的主意.

10.迭代器和iter()函數

迭代器就是有一個 next() 方法的對象, 而不是通過索引來計數. 當你或是一個循環機制(例如 for 語句)需要下一個項時, 調用迭代器的 next()方法就可以獲得它.條目全部取出后, 會引發一個 StopIteration 異常, 這并不表示錯誤發生, 只是告訴外部調用者, 迭代完成.

限制:不能向后移動, 不能回到開始, 也不能復制一個迭代器.

reversed() 內建函數將返回一個反序訪問的迭代器. enumerate() 內建函數同樣也返回迭代器. 另外兩個新的內建函數,any()和all()

Python 還提供了一整個itertools模塊,它包含各種有用的迭代器.

復制代碼 代碼如下:

>>> tupe=(12,'2',45.45)
>>> i = iter(tupe)
>>> i.next()
12
>>> i.next()
'2'
>>> i.next()
45.45
>>> i.next()
Traceback (most recent call last):
? File " ", line 1, in
??? i.next()
StopIteration

創建迭代器

對一個對象調用 iter() 就可以得到它的迭代器. 它的語法如下:
iter(obj)
iter(func, sentinel )
如果你傳遞一個參數給iter(),它會檢查你傳遞的是不是一個序列,如果是,那么很簡單:根據索引從0一直迭代到序列結束. 另一個創建迭代器的方法是使用類, 一個實現了__iter__()和next()方法的類可以作為迭代器使用.

如果是傳遞兩個參數給iter(),它會重復地調用 func ,直到迭代器的下個值等于sentinel .

11.將某件事作為另一事件導入

從模塊導入函數的時候,可以使用

復制代碼 代碼如下:

import somemodule

或者

復制代碼 代碼如下:

from somemodule import somefunction

或者
復制代碼 代碼如下:

from somemodule import somefunction, anotherfunction, yetanotherfunction

或者
復制代碼 代碼如下:

from somemodule import *

如果兩個模塊都有open函數,只需要使用第一種方式導入,然后像下面這樣使用函數:
復制代碼 代碼如下:

module1.open(...)

module2.open(...)

或者:可以在語句末尾增加一個as子句,在該子句后給出名字,或為整個模塊提供別名:

復制代碼 代碼如下:

>>> import math as foobar
>>> foobar.sqrt(4)
2.0
>>> #也可以為函數提供別名;
>>> from math import sqrt as foobar
>>> foobar(4)
2.0

這里所做的事情叫做序列解包--將多個值的序列解開,然后放到變量的序列中,更加形象一點的表達出來就是:

復制代碼 代碼如下:

>>> values=1,2,3
>>> values
(1, 2, 3)
>>> x,y,z=values
>>> x
1
>>> y
2
>>> z
3


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 丁香五月亚洲综合在线 | 欧美a∨一区二区三区久久黄 | 亚洲毛片在线观看 | 亚洲九九香蕉 | 亚洲精品视频在线 | 国产成人久久婷婷精品流白浆 | 欧美日韩亚洲国内综合网俺 | 欧美精品在线视频观看 | av天空| 香港一级毛片 | 亚洲第一区精品观看 | 色综合亚洲精品激情狠狠 | 久久中文字幕网 | 嫩草91| 美女色黄网站 | 99青青青精品视频在线 | 亚洲欧美在线视频免费 | www.75zzz.com| 欧美视频网站 | 免费一级网站 | 欧美激情一区二区三区中文字幕 | 韩漫重考生漫画画免费读漫画下拉式土豪漫 | 国产成人午夜精品5599 | 日韩一区不卡 | 成人午夜性a一级毛片美女 91精选 | 一区二区三区四区免费 | 特级生活片 | 女猛烈无遮挡性视频免费 | 亚洲成人福利在线 | 午夜久久久久久网站 | 亚洲性生活免费视频 | 亚洲xx站| 四虎永久 | 99久久精品国产毛片 | 日韩欧美在线免费观看视频 | 国产午夜精品久久久久久久蜜臀 | 福利国产在线 | 99午夜高清在线视频在观看 | 久操视屏 | 欧美成人免费看片一区 | 国产综合精品久久亚洲 |