【問題】在控制台上列印輸出乙個字母組成的金字塔。
比如7層的塔如下:
這問題應該有很多可行的解法。
下面的解法強調的是:小函式風格。
把每個函式做得足夠小,功能足夠單一。這樣出現的錯誤好發現,將來好維護。
更重要的是,小函式的組合會爆發出極強的靈活性。
#已知當前行比如aba,求下一行abcba
defne
(x):
t =[chr
(ord
(i)+1)
for i in x]
return
"a"+
"".join(t)
+"a"
# 返回n層塔的關鍵資訊(不含空格)
defta
(n):
if n==1:
return
["a"
] la = ta(n-1)
-1])
)return la
#對所有行,按底行寬度居中處理
defcen
(x):
w =len(x[-1
])return
[ i.center(w)
for i in x]
if __name__ ==
'__main__'
:for i in ta(7)
:print
(i)for i in cen(ta(7)
):print
(i)
核心的設計是把字母塔的內容與它居中顯示這兩件事完全分開處理。
呼叫 ta 函式只會得到字母序列,格式不在乎。
如果直接調它,結果:
cen 函式則專門負責居中顯示的事情。它可以用在很多地方,不是特別針對本題目而設計。
ne 函式則根據當前的最後一行內容生成它的下一行應該的內容。
有了這些函式的分解。可以試一下,對【問題10】【問題11】只要改一下 ne 函式就可以做出來了。是不是比較靈活。
軟體設計的最大殺手是需求的變化
,我們要時刻準備好應對需求的變化。
小函式的組合就是一種很不錯的應對手段。
python3字典詳解 python3中字典詳解
字典 dict 1.建立字典的幾種方式 class dict kwarg class dict iterable,kwarg 使用上面的方法構建字典 方法1構建字典 a dict one 1,two 2,three 3 a輸出結果 方法2構建字典 a dict a輸出結果 方法3構建字典 d dic...
python3字典遍歷 python3字典遍歷
python版本 python3.7 info infog.get name 得到字典info中name的值 info.keys 得到字典info中所有的鍵,結果是乙個物件 dict keys name age 需要注意在python2中該操作得到的是乙個列表 遍歷key for temp in i...
python3字串相等 python3 字串
1 拼接 1 多個字串進行連線 連線符,必須左右資料型別一致 例 print hello world 結果 helloworld 例 print 5 world 結果 typeerror unsupported operand type s for int and str 2 多個相同字串連線 字串...