python函数
1.调用函数
函数网站:http://docs.python.org/3/library/functions.html#abs
2.定义函数
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回
如果想定义一个什么事也不做的空函数,可以用pass语句
函数参数说明
*会把接收到的参数形成一个元组,而**则会把接收到的参数存入一个字典
demo例子
def product(x, *y):
a=0
for i in(y):
if x=='+': a=y[0]+y[1]
elif x=='-':a=y[0]-y[1]
elif x=='*':a=y[0]*y[1]
elif x=='/':a=y[0]/y[1]
else: return '输入错误'
return a;
# *会把接收到的参数形成一个元组,而**则会把接收到的参数存入一个字典
print(product(str(input('输入符号 + - * /')),float(input('第一个数字')),float(input('第二个数'))));
汉诺塔游戏demo
def move(n, a, b, c):
if n==1:
print(a,'-->',c)
else:
move(n - 1, a, c, b)
move(1, a, b, c)
move(n - 1, b, a, c)
move(3,'A','B','C')
3.切片
L[:] 表示复制一个L的list
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3
4.迭代
判断是否可迭代isinstance(‘abc’, Iterable)
① for i in list
for key in d:
print(key)
② enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
for i, value in enumerate(['A', 'B', 'C']):
print(i, value)
4.列表生成式
[x * x for x in range(1, 11)]
5.生成器
第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator
第二种 把fib函数变成generator,只需要把print(b)改为yield b就可以了
demo
def triangles():
L=[1]
while True:
yield L[:]
L.append(0)
L = [ L[i]+ L[i-1] for i in range(len(L))]
n = 0
results = []
for t in triangles():
results.append(t)
n = n + 1
if n == 10:
break
for t in results:
print(t)
if results == [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1],
[1, 7, 21, 35, 35, 21, 7, 1],
[1, 8, 28, 56, 70, 56, 28, 8, 1],
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
print('测试通过!')
else:
print('测试失败!')