python ii

一、條件控制語句

if 語句

Python中if語句的一般形式如下所示:


if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3

Python 中用 elif 代替了 else if,所以if語句的關鍵字爲:if – elif – else。

注意:

1、每個條件後面要使用冒號 :,表示接下來是滿足條件後要執行的語句塊。
2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
3、在Python中沒有switch – case語句。

if 嵌套

在嵌套 if 語句中,可以把 if…elif…else 結構放在另外一個 if…elif…else 結構中。

if 表達式1:
    語句
    if 表達式2:
        語句
    elif 表達式3:
        語句
    else:
        語句
elif 表達式4:
    語句
else:
    語句

二、循環語句

while 循環

Python中while語句的一般形式:

while 判斷條件:
    語句

range()函數

如果你需要遍歷數字序列,可以使用內置range()函數。它會生成數列,例如:


>>>for i in range(5,9) :
    print(i)
 
 輸出結果:    
5
6
7
8

也可以控制跳轉數 :

>>>for i in range(0, 10, 3) :
    print(i)
 
 輸出結果:   
0
3
6
9

break和continue語句及循環中的else子句

break 語句可以跳出 for 和 while 的循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行。

pass 語句

Python pass是空語句,是爲了保持程序結構的完整性。

pass 不做任何事情,一般用做佔位語句。

三、迭代器與生成器

迭代器
迭代是Python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter() 和 next()。

字符串,列表或元組對象都可用於創建迭代器:

>>> list=[1,2,3,4]
>>> it = iter(list)    # 創建迭代器對象
>>> print (next(it))   # 輸出迭代器的下一個元素
1
>>> print (next(it))
2

另一個實例如下:


class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))


輸出結果:
1
2
3
4
5

生成器

在 Python 中,使用了 yield 的函數被稱爲生成器(generator)。

跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。

調用一個生成器函數,返回的是一個迭代器對象。

以下實例使用 yield 實現斐波那契數列:

import sys
 
def fibonacci(n): # 生成器函數 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章