It's our wits that make us men.

python学习笔记(2)

Posted on By lk

函数:

在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'))