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是求和的函数