1、条件判断:
(1)if 判断
a = 100 ; b =200 ; c=300; if c == a: #注意冒号 print(a) elif c==b: #没有elseif,只有elif print(b) else : print(c)
注意:在Python中,是没有switch的
(2)None的判断
x = None if x is None: #可以用==,但是用is更加直接 print 'x is None' if not x: #因为x是None,所有not x就是true;也可以用x is not None print 'x is None'
(3)for循环
s = 0 for i in range(0, 101): #输出0-101,步长默认为1 s += i print(s) for i in range(0, 30, 5): #输出0-30,步长为5 print(s)
(4)while循环
s = 0 i = 0 while i <= 100: s += i i += 1 #根据缩进来判断其作用域是否为while print(s)
(5)continue、pass、break
for i in range(0, 100): if i < 10: pass #什么也不做 elif i < 30: continue #进入下一个循环,其实和上面差不多 elif i < 35: print(i) #进行操作 else: break #跳出for循环,
注意:上面最后的break也可以换成return,不过break只是跳出循环,而return则是跳出函数(更广)
2、函数与参数的定义:
(1)函数定义与默认参数
def func(x, y = 500): #y的默认参数值为500,可以不指定y的值 print(x, y) func(150) #x为150,y为500,默认位置,默认值 func(100, 200) #x为100,y为200,默认位置 func(y = 300, x = 100) #x与y的位置可以调换,但是必须要指定名称
(2)可变参数
def func(name, *numbers): #第一参数赋值给name,其他打包为元组 print(name) #’Tom‘ print(numbers) #1,2,3,4,'a','b';元组什么类型都可以 print(numbers[1]) #2 print(numbers[4]) #'a' func('Tom', 1, 2, 3, 4,'a','b')
(3)关键字参数
def func(name, **kvs): #**表示key/value格式,自动生成字典 print(name) print(kvs) #格式是一个字典格式 func('Jack', china = 'Beijing', uk = 'London')
(4)命名关键字参数
def func(a, b, *, china, uk): # *用于和普通参数做分割,*后面的参数一定要带上名字,否则报错 print(china, uk) func(1, 2, china = 'Beijing', uk = 'London') # 后两个参数必须传入参数名
(5)复杂情况
def func(a, b, c = 0, *args, **kvs): #传递规则:参数超过3个的,如果带参数名就传给kvs,否则就打包给args print(a, b, c, args, kvs) func(1, 2) #对应a, b, c为默认值 func(1, 2, 3) func(1, 2, 3, 'a', 'b') #因为比3个多,所以满足*args,后面字母打包 func(1, 2, 3, 'a', 'b', china = 'Beijing', uk = 'London') #后两个带参数名,要传给**kvs,而a,b要传给args func(1, 2, 3, *('a', 'b'), **{'china':'Beijing', 'uk':'London'})
(6)递归的例子:f(n)= f(n-1)+f(n-2)
def fib(n): if n < 1: raise ValueError elif (n == 1) or (n == 2): return 1 else: return fib(n - 1) + fib(n - 2) print(fib(1)) print(fib(2)) print(fib(3)) print(fib(4)) print(fib(5)) print(fib(6))
(6)汉诺塔问题
def move(n, source, target, helper): if n == 1: print(source + ' -> ' + target) else: move(n - 1, source, helper, target) print(source + ' -> ' + target) move(n - 1, helper, target, source) move(4, 'A', 'B', 'C')
3、Python中,函数是可以作为参数的:
(1)函数可以作为参数传递
def sum(x,y,p = None): s = x + y if p: #函数为真,就可以输出了 p(s) return s sum(100,200) sum(100,200,print) #把print输出函数当做参数传过去
(2)
def do_sum(data,method): return method(data) #直接调用sum函数 print([1,2,3,4],sum) #sum是求和的函数