转自: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