Python(二)關鍵詞和循環控制

一、if判斷

a = 100
b = 200
c = 300
if c == a:
    print(a)
elif c == b:
    print(b)
else:
    print(c)

二、None的判斷

x = None
if x is None:
    print('None')
else:
    print('not None')

三、for循環

for i in range (0,30,5):
    print(i)

四、while循環


s = 0
i = 1
while i<= 100:
    s += i
    i += i
print(s)
for i in range(0,100):
    if i<10:
        pass
    elif i<30:
        continue
    elif i<35:
        print(i)
    else :
        break
//輸出30,31,32,33,34

五、定義函數

def func_name(arg_1,arg_2):
    print (arg_1,arg_2)
    return arg_1,arg_2

r = func)name(1,2)
print(type(r))
print(r[0],r[1]) 

六、可變參數(必須在最後)

def func(name,*numbers)
    print (numbers)
    return 'Done'
func('Tom',1,2,3,4,'abc','df')
//輸出一個元組,元組裏面是1,2,3,4,‘abc','df'
def func(name,**kvs)
    print (name)
    print(type(kvs))
    print(kvs)
func('Tom',china = 'Beijing',uk = 'London')
//輸出
Tom
<class,'dict'>
{'uk':'London','china':'Beijing'}
def func(a,b,c,*,china,uk)
    print(china,uk)
func(1,2,3,china = 'BJ',uk = 'LD')//正確
func(1,2,3,'BJ','LD')//錯誤
//即*號後面一定要帶形參名字

def func(a,b,c=0,*args,**kvs)
    print"sonthing")

func(1,2,3,'a','b','c',china = 'BJ',uk = 'LD')
//可讀性更高的代碼
func(1,2,3,*('a','b','c'),**{'china':'BJ','uk':'LD'})
//輸出
 1,2,3
 ('a','b')
 {'uk':'LD','china':'BJ'}

七、遞歸(效率很低)
斐波那契數列

def fib(n)
    if n<1:
        raise ValueError
    elif n<=2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print(fib(100))

漢諾塔問題
1、把 n-1 號盤子移動到緩衝區
2、把1號從起點移到終點
3、然後把緩衝區的n-1號盤子也移到終點
實現:

def hanoi(n,A,B,C):
     if n== 1:
         print(A+'->'+B)
     else:
         hanoi(n-1,A,B,C)
         print(A+'->'+B)
         hanoi(n-1,C,B,A)
hanoi(4,'A','B','C')

八、python裏面函數是可以作爲參數的(因爲函數作爲對象處理)

def sum(x,y,p=None):
    s = x+y
    if p:
        p(s)
    return s
sum(100,200)
sum(100,200,print)//輸出結果300
def cmp(x,y,cp=None):
    if not cp:
        if x > y:
            return 1
        elif x<y:
            return -1
        else:
            return 0
    else:
        return cp(x,y)

def my_cp(x,y):
    if x<y:
        return 1
    elif x ==y:
        return 0
    else
        return -1

print(cmp(100,200))//輸出-1
print(cmp(100,200,my_cmp))//輸出1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章