# -*- coding: utf-8 -*-
#for 循环
for i in range(0,30,5):
print(i)
''' for 循环形式:for i in range(start,end,steps)
遍历算法
'''
#while循环
s = 0
i = 1
while i<=100:
s +=i
i +=1
print(s) #运行结果:5050
# continue pass break
for i in range(0,100): #定义变量范围
if i <100:
pass #什么也不做
elif i<30:
continue #进入下一次循环,其实这里也是什么都不做。
elif i <35:
print(i)
else:
break #中断循环,
#函数定义
def func_name(arg_1,arg_2):
print(arg_1,arg_2) #一定要空格
return arg_1+arg_2 #返回值,如果是多个值,则会返回元组。
r = func_name(1,2)
print(r)
print(type(r))
#默认函数
def func(x,y=500): #y不指定值时,会默认返回500
print('x= ',x)
print('y=',y)
return x+y
print(func(100)) #即:输出x 100,y 500
print(func(y=300,x=200)) #函数内的参数名字顺序可以随意调换。
print(func(x=400))
def func(p):
print('x=',p['x'])
print('y=',p['y'])
print(func({'x':200,'y':100})) #也可以用字典实现以上类似的功能
#可变参数
def func(name,*numbers): #参数前加*,表示为可变参数
print(type(numbers)) #类型为 tuple 元组类型。
'''实际上是把参数name后面的所有参数放到一个数组里面去,
而且类型无要求,元组内的元素类型可以不同。
'''
print(numbers)
print(numbers[0])
return 'done'
func('1',2,3,54) # tuple -元祖 <=>只读数组
#可变参数怎么引用
def my_print(*args):
print(args)
print(*args) #表示,把数组作为可变参数处理
my_print(3,2,3,'ab','c')
def func(name,**kvs): #**意味着 key/value 类型的字典
print(name)
print(type(kvs))
print(kvs)
func('tom',chin='beijing',uk='london')
def func(a,b,c=0,*args,**kvs):
print(a,b,c)
print(args)
print(kvs)
func(1,2)
func(1,2,3)
func(1,2,3,'a','b')
func(1,2,3,'a','b',china='BJ',uk='LD')
func(1,2,3,*('a,','b'),**{'china':'BJ','uk': 'LD'}) #与上一行相比,增加了代码的可读性
def my_print(*args):
print(*args)
my_print('x=',100,'; y=',200)
#递归:把大问题分解为小问题进行求解
#斐波那契数列 f(n) = f(n-1) +f(n-2)
def fib(n):
if n<1:
raise ValueError
if 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)) # 如果是fib(40)的话,计算速度太慢
#汉诺塔问题
def hanoi(n,A,B,C):
if n==1:
print(A + "->" + B)
else:
hanoi(n-1,A,C,B)
print(A + "->" + B)
hanoi(n-1,C,B,A)
hanoi(4,'A','B','C')
#函数作为参数
p = print
p (1,2,3) #调用P和调用print是等价的
def sum(x,y,p =None):
s = x+y
if p: #表示 P为真的时候,执行下面操作即P不是None
print(s)
return s
sum(100,200) #第三个参数为None,不执行if,即不打印s
sum(100,200,print) # 第三个参数不是None,即执行print(s)
#比较函数
def cmp(x,y,cp=None):
if not cp:
if x>y:
return 1
elif x
return -1
else:
return 0
def my_cp(x,y):
if x
return 1
elif x==y:
return 0
else:
return -1
print(cmp(100,200))
print(my_cp(100,200))
#例子
def do_sum(data,method):
return method(data)
print(do_sum([1,2,3,4],sum))
elif x
网友评论