漢諾塔和函式

2021-10-05 12:55:08 字數 1325 閱讀 7991

mylist = [10,12]

chang(mylist)

print("函式外取值: ", mylist)

結果:函式內取值: [10, 12, [3, 4]]

函式外取值: [10, 12, [3, 4]]

2、文件字串

help()是python中內建函式,通過help()函式可以查詢python中函式的用法

在定義函式時,可以在函式內部編寫文件字串,文件字串就是對函式的說明

print(help())

3、函式作用域

• 作用域(scope)

• 作用域指的是變數生效的區域

• 在python中一共有兩種作用域

• 全域性作用域

• 全域性作用域在程式執行時建立,在程式執行結束時銷毀

• 所有函式以外的區域都是全域性作用域

• 在全域性作用域中定義的變數,都是全域性變數,全域性變數可以在程式的任意位置進行訪問

• 函式作用域

• 函式作用域在函式呼叫時建立,在呼叫結束時銷毀

• 函式每呼叫一次就會產生乙個新的函式作用域

• 在函式作用域中定義的變數,都是區域性變數,它只能在函式內部被訪問

4、命名空間

命名空間實際上就是乙個字典,是乙個專門用來儲存變數的字典

locals()用來獲取當前作用域的命名空間

如果在全域性作用域中呼叫locals()則獲取全域性命名空間,如果在函式作用域中呼叫locals()則獲取函式命名空間

返回值是乙個字典

5、遞迴函式

• 遞迴是解決問題的一種方式,它的整體思想,是將乙個大問題分解為乙個個的小問題,直到問題無法分解時,在去解決問題

• 遞迴式函式有2個條件

• 1. 基線條件 問題可以被分解為最小問題,當滿足基線條件時,遞迴就不執行了

• 2. 遞迴條件 可以將問題繼續分解的條件

二、漢諾塔遊戲問題,現在有abc三根柱子。要求:將a柱所有的圓盤放到c柱。在移動的過程中可以借助b柱。並且規定大圓盤不能放小圓盤上面,每次只能移動乙個盤子。用遞迴的方式來解決漢諾塔問題

def hanrtower(number,a,b,c):

#number 代表盤子,a,b,c代表柱子

if number==1:

print(『第乙個盤子從』,『a』,』–>』,『c』)

else:

hanrtower(number-1,a,c,b)

print('第',number,'個盤子',a,'-->',c)

hanrtower(number-1,b,a,c)

hanrtower(5,『a』,『b』,『c』)

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

漢諾塔合集之漢諾塔3

漢諾塔3 步驟分析 1.當只有乙個圓盤時,要從a到b再到c 2.同樣擴充套件經典漢諾塔問題來看,先把a柱上 n 1 個圓盤,經b移動到c 3.把最後乙個圓盤從a移動到b 4.把c柱上的 n 1 個圓盤,經b移動 移回 到a 5.把b上的最後乙個圓盤從b移到c 6.最後把a上的 n 1 個圓盤經過b移...

漢諾塔的移動函式

漢諾塔 的移動 用python編寫 move n,a,b,c 函式,接收引數n,n表示3個柱子a b c中第1個柱子a的盤子數量,列印出把所有盤子從a借助b移動到c的方法 期待輸出 a c a b c b a c b a b c a c move 3,a b c 把不是最下面的盤子都經過c移到b 把...