python實現簡單問題(漢諾塔 楊輝三角等)

2021-08-11 11:24:34 字數 1260 閱讀 9876

最近在學習python3.6,發現了很多之前新功能,而且很實用

然後之前也沒用python寫過一些之前c解決的小問題,最近在學習的時候也在練習把之前的小問題實現

**:

def

move

(n, a, b, c):

if n == 1:

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

else :

move(n-1, a, c, b)

move(1, a, b, c)

move(n-1, b, a, c)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

.....

**:

def

********s

(m):

l = [1]

n=1while n<=m:

yield l

l = [l[x] + l[x+1] for x in range(len(l)-1)]#計算中間值

l.insert(0,1)#給頭新增1

n+=1

思想:使用了python的generator和列表生成式,generator和函式的區別是,函式是按照**順序執行,遇到return或迴圈最後一行則退出;generator則是呼叫一次yield語句執行一次,停留到yield語句執行後的狀態。

**:

def

char2num

(s):

return [s]

defstr2float

(s):

n = s.index('.')

num = 0

deffn

(x, y):

return x * 10 + y

num += reduce(fn, map(char2num, s[:n]))

num += reduce(fn, map(char2num, s[n+1:]))/10**len(s[n+1:])

return num

思路:第乙個函式使用字典將字元轉化為整形,先使用index屬性找到小數點所在的位置,然後分為兩部分加,第一部分使用正常的reduce和map,第二部分則計算完後除以10的len(s[n+1:])次方,最後返回num即可

暫且就是這些,後面練習到了還會更新。

漢諾塔問題python詳解 《簡單分析》漢諾塔問題

漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...

python實現漢諾塔問題

count 0 defhanoi n,x,y,z 圓盤數量,起始柱子,中間柱子,目標柱子,global count if n 1 print format 1,x,z count 1 else hanoi n 1,x,z,y 把 n 1 個圓盤從x移到y上,需借助z x z y print form...

python實現漢諾塔問題

以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n 1個 三層就是3 1個 盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解 要解決從下往上數第n...