轉自:http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.htmlhtml
本文給出兩道趣味題的Python解法 題目1:要求算一任意長度字符串中不一樣的字符以及它的個數。 題目2:把一段字符串用「右起豎排」的古文格式輸出。
題目難度不大,都是針對字符串的操做,邏輯比較簡單,靈活在對不一樣語言、語法的掌握程度。python
看了你們用C++、C#、Java等語言的實現,總感受牛刀殺雞太麻煩,有興趣的朋友能夠本身寫寫看或者直接看原文的網友回覆。我最近一段時間Python寫的比較多,讀到這些題目時候,就有一種躍躍欲試的衝動。由於我知道用Perl,Python,Ruby等動態語言來作這類題目,會是很是理想的。後來我作了這兩道題目,結果也使人滿意,代碼之簡潔保持在全部答案的前列。數組
先看第一題Python解答:spa
dic = {} for s in "abcdefgabc": dic[s] = 1 if s not in dic else (dic[s]+1) print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())
輸出結果:code
a,2 c,2 b,2 e,1 d,1 g,1 f,1
Python的四行代碼分別作了dictionary的聲明,賦值,字符串的遍歷,以及高效拼接。htm
若是尚未看出它的簡潔和強大的話,請看第二題的解法:blog
def main(offset=6): string = u' a = [[' ']*offset for row in xrange(offset)] for i in xrange(offset): for j in xrange(offset): a[i][j] = string[j + i*offset] b = [[r[col] for r in a[::-1]] for col in xrange(len(a[0]))] print '\n'.join([u'┊'.join(unicode(c) for c in row)for row in b])靜夜思 李白牀前明月光,疑似地上霜。舉頭望明月,低頭思故鄉。090131'
輸出結果:ip
0┊低┊舉┊疑┊牀┊靜
9┊頭┊頭┊似┊前┊夜
0┊思┊望┊地┊明┊思
1┊故┊明┊上┊月┊
3┊鄉┊月┊霜┊光┊李
1┊。┊,┊。┊,┊白
這題若是用C#等實現,代碼要在20行以上。下面我簡單介紹一下這幾行代碼:ci
經過這兩題,咱們看到Python在處理字符串時候的十分靈活方便,雖然一種語言的好壞不該徹底靠是否簡潔來衡量,但對於我我的而言,Python是目前我用過的最好的語言。並且對於趣味題來講,這不就是咱們解題的趣味所在嗎?unicode