Python(二)關鍵詞和迴圈控制
阿新 • • 發佈:2019-02-02
一、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