菜鸟学Python粉丝的第23篇投稿
阅读本文大概需要5分钟
菜鸟学编程想要提升水平,光看不练假把式。多练多看无疑是提升自身编程能力的重要途径,然而很多刚入门的新手往往不知如何去练去学而困惑,这里给大家推荐一个既好用又好玩的代码练习网站codewars,用过都说好!
要点:
-
什么是Codewars
-
Codewars有什么好处
-
2道题的妙解
-
快速上手Codewars
01
Codewars是啥
Codewars是一个代码解题网站,支持包括Python在内的多种编程语言。目前里面题目分为8个段位(等级),对应的用户段位也分为8级,其中起始段位为8,段位越高,段数越小。
不同等级的题目有不同的经验值,新入门的朋友可以通过刷一些难度适宜的题目循序渐进地学习,同时提升自己的段位,随着经验值和段位的提升还会陆续解锁一些新技能。
比如:讨论、评分、出题等等,需要注意的是,解决一个问题获得的经验值并不是固定的,还会受到代码提交次数、运行速度等因素的影响,所以在提交之前一定要把问题考虑周全,最好先在本地环境中跑一下。
02
Codewars妙用
作为一个优秀的代码练习网站,codewars带给我们的收获主要有以下三个方面:
1.巩固Python语言基础
codewars有着极其庞大的题库,涵盖了字符串、数字、图形、面向对象等方方面面的知识点,通过不断的练习和积累,有助于我们进一步巩固和掌握Python基础知识、学习map、reduce等高阶函数的运用。上图为codewars中的题库和分类,正所谓“看花容易绣花难”,很多细节问题只有自己动手写过才会留意,而督促大家自己动手凭空构建代码、巩固基础知识正是使用codewars的意义所在。
同时,codewars提供的经验模式和评分、讨论等互动性功能,会对用户产生一种正向反馈,这一点对刚入门的新手也是极其宝贵的。
2.改进Python代码质量
codewars有一个非常好的设计,就是在我们解题成功后可以查看其他人的代码,其中不乏非常精辟的解题思路和 精炼的代码风格。
这对于我们提高自身的代码质量、加深对Python语言的理解、拓展思维方式都是非常有益的。 别人的代码中也会有一些不足或缺陷,对于这些我们也要学会鉴别和避免。
03
举两道题的妙解
1.人名问题:
以固定格式给出一系列名字:[ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ],要求以“Bart, Lisa & Maggi”的格式输出:
-
如果只有两个名字,则以“Lisa & Maggi”的格式输出
-
如果只有一个名字,则以“Maggi”的格式输出
-
如果给出的名字列表为空,则返回空值('')
解体思路:
以给出的名字列表长度为依据,分类提取数据并拼接字符串
小白代码:
上面的代码很成功的解决了这个问题,但是...会不会感觉代码太繁琐了?我们再来看下面一段代码。
高手示范:
-
这段代码非常巧妙的利用了-1,从后往前提取列表,而不是传统的从前往后。
-
通过使用format和join函数,把代码长度缩短为原来的一半,代码质量和精简程度都发生了大幅提升。
-
在codewars中,当我们以自己的方式解决问题后再去学习别人的代码,体会会更加深刻,收获也会更大。
2.矩形分割问题
给出一个矩形,求该矩形最少能被分割成几个正方形,并以列表的格式返回各正方形的边长;如果给出的初始矩形本身就是正方形,则返回None。
例如:给出一个5×3的矩形,则返回[3, 2, 1, 1](下图):
思路解析:
以长方形短边为基准切割正方形,剩余部分作为一个新的矩形继续处理。当然,如果剩下的部分是一个 正方形则将其纳入结果当中(而不是返回None)。
代码参考:
-
上面这段代码是用了一个循环,也可以用递归调用来做,道理都是一样的。
-
在这个题目中,我们首先把一个几何问题(矩形)转换为数学问题(两个边的长度)
-
再把这个数学问题用 Python程序描述出来并予以解决。
-
当然,这个题目还是比较简单的,随着段位的提升将有更加复杂和好玩的题目等着我们,足够你挖掘和发挥自己的聪明才智。
04
快速上手Codewars
作为一个全英文网站,刚接触难免会有一点别扭,这里我结合自己的使用情况简单介绍一些基本的功能 。
1.注册
可以单独注册一个codewars账号,也可以关联其他社区账号(比如github),不过无论使用哪种方式,下面两步 是不可避免的。
选择语言:
这里我们当然选择Python啦,如果有兴趣也可以选择其他语言。
注册测试:
比较特立独行的地方,codewars注册的时候居然需要解题(虽然非常的简单)。
解题通过后就可以正常的注册操作了。(有人在这道题之后还会遇到一个涉及面向对象的题目,不过我没遇到)
2.选题
codewars中选择题目的方式主要有以下3种,非常详细和人性化,大家一起来看一些:
随机选题:
codewars会根据用户当前段位,从题库中随机选取难度相应的题目。如下图,进入主页后会显示出系 统选定的题目,如果想要解题就点击“TRAIN”按钮,如果想跳过换一道题就点选“SKIP”。
段位选题:
如果想自己选择某个段位的题目,可以进入Kata页面手动点选。下图中我选中了段位5,在右侧就会列 出一堆相应段位的题目。
类别选题:
同样是在Kata页面,可以根据题目的类别选择题目(可多选)。下图中我选择的题目类别 是“Strings”和“Arrays”,codewars会把同时涉及字符串和队列知识点的题目在右侧列出。
3.查阅
在任意界面的右上角可以进行用户信息的相关操作,比如查看和修改个人信息、更改编程语言等,这里着重说一下 如何查询做过的题目:
-
点击右上角头像图标进入个人主页
-
然后进入solutions页面,可以看到以前做过的题目都在这里了
-
包括已经通过的题目(completed)、未完成的题目(unfinished)。
好了,关于codewars就简单介绍到这里,工欲善其事,必先利其器,codewars是一非常不错的网站,对菜鸟提供功力非常有帮助!
在解题的过程中我们会思考如何把现实问题转化为数学问题,如果把一个数学问题用编程语言描述出来, 如何从程序设计的角度来思考解决问题的方式。
希望今天的文章能给大家一些收获。当然网站还有更多的好玩的功能还没有尝试、很多有趣的题目还没有刷到,接下来就靠大家自己去探索了~
如果这篇文章对你有帮助,或者你有好玩有趣的网站,也可以留言讨论!
你的文章值得我为你打call
近期热门:
程序员如何用Python科学炒股
用Python来分析股票|发现炒股软件里惊人内幕
我爬取了微信的粉丝留言数,就为了...
零基础学了8个月的Python,到底有啥感悟
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 建议收藏!22款终端生产力工具,效率飞起!05/30
- ♥ Python 最好用的8个VS Code扩展07/25
- ♥ 为什么打印语句不能打印?08/31
- ♥ 如何在python3代码中实现加法重载?12/04
- ♥ python中使用yield的注意事项10/17
- ♥ python支持哪些数据库09/12
内容反馈