函数:
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:
然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def hello(name):
if name == '我':
return "%s哈哈哈哈"%name
else:
return '%s无语'%name
name=input("姓名:")
print(hello(name))
#请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
#因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
#如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。
#return None可以简写为return
#如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
例子:
#请定义一个函数 ’quadratic(a,b,c)‘,接收三个参数,返回一元二次方程:
ax² + bx + c = 0
#的两个解。(提示:计算平方根可以调用math.sqrt()函数)
#答案:
import math
def quadratic(a,b,c):
if not isinstance(a,(float,int)):
raise TypeError('a is not a number')
if not isinstance(b,(float,int)):
raise TypeError('b is not a number')
if not isinstance(c,(float,int)):
raise TypeError('c is not a number')
d = b*b-4*a*c
if a==0:
if b==0:
if c==0:
return "方程根为全体实数"
else:
return "方程无根"
else:
x1=-c/b
x2=x1
return x1,x2
else:
if d<0:
return "方程无根"
else:
x1 = (-b + math.sqrt(d))/2/a
x2 = (-b - math.sqrt(d))/2/a
return x1,x2
print(quadratic('a',4,4))
#计算x的n次方:
def power(x,n):
s=1
while n > 0:
n = n-1
s = s*x
return s
print(power(3,4))
#递归计算num的阶乘:
方法1:
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
print(fact(100))
方法2:
def fac(num):
return fact_list(num,1)
def fact_list(num,pro):
if num == 1:
return pro
return fact_list(num-1,num*pro)
print(fac(1000))
#请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、B、C中第1个柱子A的盘子数量,
#然后打印出把所有盘子从A借助B移动到C的方法
#期待输出:
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
def move(n,a,b,c):
if n == 1:
return print("%s--->%s"%(a,c))
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
print(move(3,'A','B','C'))