美文网首页python交流学习
从趣味题中学习Python,让你记忆深刻

从趣味题中学习Python,让你记忆深刻

作者: 78c40b03ee4e | 来源:发表于2019-02-27 16:45 被阅读0次

前言

Python题库中有许多题目,大多数是枯燥无聊的,会让大家学得很无趣和烦恼,今天为大家介绍两道趣味性较强的题目。

题目难度不大,都是针对字符串的操作,逻辑比较简单,灵活在对不同语言、语法的掌握程度。

题目1:

要求算一任意长度字符串中不同的字符以及它的个数。

解答代码

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())

输出结果:

a,2
c,2
b,2
e,1
d,1
g,1
f,1

Python的四行代码分别做了dictionary的声明,赋值,字符串的遍历,以及高效拼接。

如果还没有看出它的简洁和强大的话,请看第二题的解法

题目2:

把一段字符串用“右起竖排”的古文格式输出。

解答代码

def main(offset=6):
    string = u'
静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。090131'

    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])

输出结果:

0┊低┊举┊疑┊床┊静
9┊头┊头┊似┊前┊夜
0┊思┊望┊地┊明┊思
1┊故┊明┊上┊月┊ 
3┊乡┊月┊霜┊光┊李
1┊。┊,┊。┊,┊白

小编推荐一个学python的学习qun 740322234
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

这题如果用C#等实现,代码要在20行以上。下面我简单介绍一下这几行代码:
第3行,在Python里面二维“数组”通过嵌套list来实现,这里初始化一个6行6列的二维数组;

第7行,我们把“矩阵”顺时针旋转了90度(行列置换,并且对置换后的行首尾对调-这里的::-1就是用来置换一个list的trick);

最后一行,我们把数组里的每行中元素,每行之间分别用两个不同字符拼接起来。join方法以及for..in..语句在python中是相当常见的用法。

通过这两个问题,我们可以看到python在处理字符串方面非常灵活和方便。虽然不能用简单来衡量语言的质量,但就我个人而言,Python是我使用过的最好的语言。对于有趣的问题,这不是我们有趣的问题解决所在吗?

相关文章

网友评论

    本文标题:从趣味题中学习Python,让你记忆深刻

    本文链接:https://www.haomeiwen.com/subject/gbmfuqtx.html