python学习笔记05-变量作用域+汉诺塔

变量作用域

顾名思义,即变量可以产生作用的区域,简单分为global和local (全局和局部)

在python中定义全局变量使用关键字 global +变量名

局部变量无需定义,函数体内的变量,如果不用global关键字进行变量的作用域提升,则默认作用域为函数体内。需要注意的一点是,在函数内进行变量作用域提升时,在调用该变量时,应先执行函数,使变量提升为全局变量,才可以调用,否则报错

例:

def func(n):

    global a

    a = n

    print(a)

//直接print(a)回报错

//正确方式

func(100)

print(a)

内置数据结构(变量类型)

list(列表)(有点类似php的数组)

定义方式 a = list([1,2,3,4,5,6])或a = [1,2,3,4,5,6]

和php类似,可以通过下标取值 a[0] 的值就是1

分片的概念(类似php的数组截取)

a[1:5:1] 的意义是 从下标为2的地方开始截取,截到下表为4的地方,不包括下标为4的值,截取时每隔1个数取一个值 

最神奇的一点

如果 a = 【1,2,3】

aa = a 

a【0】 = 100

此时 aa【0】也会等于100  a和aa完全相等


汉诺塔递归实例(规则,一次只能移一个,必须大的在下面)

def hano(n,a,b,c):

    if n == 1:

        print(a,'-->',c)

        return None

    if n == 2:

        print(a,'-->',b)

        print(a,'-->',c)

        print(b,'-->',c)

        return None

    if n > 2:

        hano(n-1,a,c,b)#把c当成媒介从a上转移到b上

        print(a,'-->',c)#把a上剩的最大的盘子转移到c上

        hano(n-1,b,a,c)#把a当成媒介从b上转移到c上完成汉诺塔转移

        return None

hano(3,'A','B','C')

帮助理解递归

你可能感兴趣的:(python学习笔记05-变量作用域+汉诺塔)