Python3 控制語句、函數、文件

2020年6月14日22:45:47
上一篇鏈接

https://blog.csdn.net/weixin_45556521/article/details/106732925

六、控制語句

end 關鍵字
關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾添加不同的字符

# Fibonacci series: 斐波納契數列
# 兩個元素的總和確定了下一個數
a, b = 0, 1
while b < 1000:
    print(b, end=',')
    a, b = b, a+b

1.條件控制

  • Python 中用 elif 代替了 else if,所以if語句的關鍵字爲:if – elif – else
  • 每個條件後面要使用冒號 :,表示接下來是滿足條件後要執行的語句塊
  • 沒有switch – case語句
if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3

2.循環控制

a.while

語句:

while 判斷條件(condition):
    執行語句(statements)……

例子:

n = 100
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1
print("1 到 %d 之和爲: %d" % (n,sum))

CTRL+C 來退出當前的無限循環
無限循環:

var = 1
while var == 1 :  # 表達式永遠爲 true
   num = int(input("輸入一個數字  :"))
   print ("你輸入的數字是: ", num)
print ("Good bye!")

語句:

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

例子:

count = 0
while count < 5:
   print (count, " 小於 5")
   count = count + 1
else:
   print (count, " 大於或等於 5")

b.for

語句:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

例子:

languages = ["C", "C++", "Perl", "Python"] 
for x in languages:
	print (x)

c.range()函數

如果你需要遍歷數字序列,可以使用內置range()函數。它會生成數列
也可以使range以指定數字開始並指定不同的增量(甚至可以是負數,有時這也叫做’步長’):

d.break 和 continue

在這裏插入圖片描述
break 語句可以跳出 for 和 while 的循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行。

continue 語句被用來告訴 Python 跳過當前循環塊中的剩餘語句,然後繼續進行下一輪循環。

e.pass 語句

pass是空語句,是爲了保持程序結構的完整性。
pass 不做任何事情,一般用做佔位語句

七、迭代器與生成器

1.迭代器

  • 是訪問集合元素的一種方式。
  • 是一個可以記住遍歷的位置的對象。
  • 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
  • 代器有兩個基本的方法:iter() 和 next()。
  • 字符串,列表或元組對象都可用於創建迭代器

iter()函數

# noinspection PyUnresolvedReferences
# encoding:utf-8
list=[1,2,3,4]
it = iter(list)    # 創建迭代器對象
for x in it:
    print (x)

next() 函數

# noinspection PyUnresolvedReferences
# encoding:utf-8
import sys         # 引入 sys 模塊
list=[1,2,3,4]
it = iter(list)    # 創建迭代器對象
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

還有一些知識需要面向對象的知識,先埋下一個坑
StopIteration

2.生成器

生成器是一個返回迭代器的函數,只能用於迭代操作

八、函數

  • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。
  • 任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。
  • 函數內容以冒號起始,並且縮進。
  • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None
def print_welcome(name):
    print("Welcome", name)
w = 4
h = 5
print("area =", area(w, h))

1.python 函數的參數傳遞

a.不可變類型:類似 c++ 的值傳遞,如 整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身。

def ChangeInt( a ):
    a = 10
b = 2
ChangeInt(b)
print( b ) # 結果是 2

b.可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

# 可寫函數說明
def changeme( mylist ):
   "修改傳入的列表"
   mylist.append([1,2,3,4])
   print ("函數內取值: ", mylist)
   return
# 調用changeme函數
mylist = [10,20,30]
changeme( mylist )
print ("函數外取值: ", mylist)

函數參數的使用不需要使用指定順序

def printinfo( name, age ):
   "打印任何傳入的字符串"
   print ("名字: ", name)
   print ("年齡: ", age)
   return
#調用printinfo函數
printinfo( age=50, name="lushi" )

如果沒有傳遞參數,則會使用默認參數

#可寫函數說明
def printinfo( name, age = 35 ):
   "打印任何傳入的字符串"
   print ("名字: ", name)
   print ("年齡: ", age)
   return
#調用printinfo函數
printinfo( name="runoob" )

2.不定長參數

需要一個函數能處理比當初聲明時更多的參數。叫做不定長參數,聲明時不會命名。

# 可寫函數說明
#加了星號 * 的參數會以元組(tuple)的形式導入
def printinfoa( arg1, *vartuple ):
   "打印任何傳入的參數"
   print ("輸出: ")
   print (arg1)
   print (vartuple)
#加了兩個星號 ** 的參數會以字典的形式導入
def printinfob( arg1, **vardict ):
   "打印任何傳入的參數"
   print ("輸出: ")
   print (arg1)
   print (vardict)
# 調用printinfoa 函數
printinfoa( 70, 60, 50 )
# 調用printinfob 函數
printinfob(1, a=2,b=3)

3.匿名函數

  • lambda 來創建匿名函數

  • 匿名,意即不再使用 def 語句這樣標準的形式定義一個函數

  • lambda 只是一個表達式,函數體比 def 簡單很多。

  • lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。

  • lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間裏的參數。

  • lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。
    語句

     lambda [arg1 [,arg2,.....argn]]:expression
    
# 可寫函數說明
sum = lambda arg1, arg2: arg1 + arg2
 
# 調用sum函數
print ("相加後的值爲 : ", sum( 10, 20 ))

4.return語句

用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None

# 可寫函數說明
def sum( arg1, arg2 ):
   # 返回2個參數的和."
   total = arg1 + arg2
   print ("函數內 : ", total)
   return total
 
# 調用sum函數
total = sum( 10, 20 )
print ("函數外 : ", total)

5.強制位置參數(Python3.8)

/ 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式

#形參 a 和 b 必須使用指定位置參數,c 或 d 可以是位置形參或關鍵字形參,而 e 或 f 要求爲關鍵字形參
def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)
f(10, 20, 30, d=40, e=50, f=60)
#錯誤調用
f(10, b=20, c=30, d=40, e=50, f=60)   # b 不能使用關鍵字參數的形式
f(10, 20, 30, 40, 50, f=60)           # e 必須使用關鍵字參數的形式

未完待續。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章