资讯专栏INFORMATION COLUMN

数据分析之在线JupyterNotebook使用小技巧|Python技能树测评

gyl_coder / 2193人阅读

摘要:三种运行方式的快捷键见菜单分别表示只运行当前单元格运行并选择下一个单元格和运行并向下插入一个单元格。也可以使用直接在中显示网页,代码效果直接在单元格下方展示差异情况。等未来正式发布的时候,一定非常好用后,没有的用户们也可以使用该功能。

大家好,我是小小明。

受CSDN官方邀请,前来测评《python 技能树》 ,活动地址:https://bbs.csdn.net/topics/600937310

XDM,一起来测评,一起来拿奖吧!奖品多多,福利多多噢~

首先,我们打开内测技能树页面:

众所周知,jupyter是数据分析领域最常用的工具,所以我直接进入数据分析版块。

虽然目前看到选项过于单薄,但是不耽误我们玩玩csdn的jupyter。

下面我们就点开第一个模块的第一题开始玩玩吧:

我去,虽然只是一道选择题,但实在是已经吓死宝宝了,这代码也太长了点。那么先随便选个试试:

嘿嘿,选择A点提交后,在线Jupyter的入口就出现了。看我怎么跑代码干翻你这道 《大家来找茬》 的题目。

点击前往就出现了,服务启动的页面:

等待启动完毕后,就进入到了JupyterNoteBook的开发页面:

作为一名资深jupyter玩家,这点功能和插件显然是不满足要求的,下面我们看看如何安装一些插件:

给JupyterNoteBook安装插件

首先点击open:

然后进入Nbextensions插件选项卡,我将我最需要的三个插件打勾:

对于Autopep8这玩意,我们需要pip装点库,回到前面的代码界面执行:

!pip install autopep8

这是因为我上次使用时已经下载过有缓存,所以直接就安装好了。

安装完成后刷新网页刚才选择的插件就会生效。然后给代码框加个默认行号显示:

展开目录

点开目录按钮后,就可以编辑Markdown文本:

如何将一个代码节点转换为Markdown节点呢? 按下快捷键H即可打开快捷键菜单:

这意味着,只需要记住H快捷键,其他快捷键都通过这个面板随时查询。

可以看到按下ESC退出进入命令行模式后,按下快捷键M即可将其转换为Markdown文本节点,数字快捷键1~6即可将将其转换对应等级的标题。

复制代码并运行

点击右上角的复制按钮即可复制代码:

然后粘贴到JupyterNotebook中:

粘贴完,代码是这种使用制表符/t缩进的形式,现在按下快捷键Ctrl+L即可启动autopep8代码格式化:

可以看到格式化之后的代码都是空格缩进的形式。

根据右上角的提示即可运行代码,运行后:

报错,显然我们可以排除A选项。

三种运行方式的快捷键见Cell菜单:

分别表示只运行当前单元格、运行并选择下一个单元格 和 运行并向下插入一个单元格。

大家可以都试试,感受一下区别。

复制B选项的代码并运行后也报错:

运气比较好已经排除两个选项了,继续干C和D:


D选项居然正确了:


咱们就选个D试一下?
✅Good,回答正确了:

差异代码检测

下面我们继续下一题:

这次代码终于简化多了。这次全部复制粘贴到jupyter运行后发现,A和C报错,B和D正确运行。

对于B和D这两个选项的代码,我看了好几眼还真看不出区别在哪里,太像 《大家来找茬》 的找茬游戏了。

不过没有关系,咱们有JupyterNotebook来运行Python代码,标准库difflib让差异无处遁形:

import difflibtext1 = """import csvdef dump_list(file, list):    with open(file, "w", newline="") as csvfile:        spamwriter = csv.writer(csvfile, delimiter=" ",                                quotechar="|", quoting=csv.QUOTE_MINIMAL)        for row in list:            spamwriter.writerow(row)def load_list(file):    with open(file, "r", newline="") as csvfile:        spamreader = csv.reader(csvfile, delimiter=" ", quotechar="|")        for row in spamreader:            yield rowif __name__ == "__main__":    rows = [        ["Spam"] * 5 + ["Baked Beans"],        ["Spam", "Lovely Spam", "Wonderful Spam"]    ]    list_file = "/tmp/list.csv"    dump_list(list_file, rows)    rows = load_list(list_file)    for row in rows:        for cell in row:            print(cell)"""text2 = """import csvdef dump_list(file, list):    with open(file, "w", newline="") as csvfile:        spamwriter = csv.writer(csvfile, delimiter=" ",                                quotechar="|", quoting=csv.QUOTE_MINIMAL)        for row in list:            spamwriter.writerow(row)def load_list(file):    with open(file, "r", newline="") as csvfile:        spamreader = csv.reader(csvfile, delimiter=" ", quotechar="|")        for row in spamreader:            yield rowif __name__ == "__main__":    rows = [        ["Spam"] * 5 + ["Baked Beans"],        ["Spam", "Lovely Spam", "Wonderful Spam"]    ]    list_file = "/tmp/list.csv"    dump_list(list_file, rows)    rows = load_list(list_file)    for row in rows:        while cell in row:            print(cell)"""def diff_compare(text1, text2, diff_out="diff_result.html", max_width=30, numlines=0, show_all=False):    text1 = [row.rstrip() for row in text1.splitlines(keepends=True)]    text2 = [row.rstrip() for row in text2.splitlines(keepends=True)]    d = difflib.HtmlDiff(wrapcolumn=max_width)    with open(diff_out, "w", encoding="u8") as f:        f.write(d.make_file(text1, text2, context=not show_all, numlines=numlines))diff_compare(text1, text2, numlines=3)

运行后,打开生成的html文件:

原来差异在一个选项是for,一个选项是while。当然选for的这个选项啦。
也可以使用IPython.display.HTML直接在jupyter中显示网页,代码:

from IPython.display import HTMLdef diff_compare(text1, text2, diff_out="diff_result.html", max_width=70, numlines=0, show_all=False):    text1 = [row for row in text1.splitlines(keepends=True)]    text2 = [row for row in text2.splitlines(keepends=True)]    d = difflib.HtmlDiff(wrapcolumn=max_width)    return d.make_file(text1, text2, context=not show_all, numlines=numlines)diff_html = diff_compare(text1, text2, numlines=1)HTML(diff_html)

效果:

直接在单元格下方展示差异情况。

总体测评

以上就是个人体验Jupyter notebook的全过程,个人感觉还是挺方便的。几乎跟本地自己安装的Jupyter一样的用,想装啥插件也都可以直接装。

不过,我有点想吐槽这个题,根本就不是技术题啊,纯粹就是PK技术达标的情况下谁的眼力好啊。

不过呢,咱们还是可以通过代码差异查找软件,找出差异后进行对比分析,从而快速解题。代码差异查找除了使用我上面所用的代码还可以使用Beyond Compare这个软件。

最后感谢CSDN,这个Jupyter服务虽然还处于VIP内测阶段,但是已经挺好用了,相信未来还会越来越好。等未来正式发布的时候,一定非常好用后,没有VIP的用户们也可以使用该功能。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121428.html

相关文章

  • 学习python就用python技能Python技能测评

    摘要:你想学习吗你知道技能树吗技能树是提供的系统化,面向实战的学习环境。如果你是初学者请马上开始学习,你最终可以获得的技能认证。学习到任何一阶段的同学们都可以轻松加入技能树的学习,所以你要学习就请赶快加入吧。 python 是一种很流行的高级动态语言。编程语言的的排行可以参考TIOBE。当然如果从...

    Harpsichord1207 评论0 收藏0
  • python_学习与工作|Python技能测评

    摘要:今天看到社区有活动,官方需要的友友们去内测下新产品,领域技能树领域技能树。并进行大范围的口口相传,在学生之间进行大量推广。对于大部分职场人,业务学习第一位。他们的学习更多是为了解决工作问题。以上仅个人愚见。 今天看到社区有活动,官方需要csdn的友友们去内测下新产品,Python领域「技能树...

    Sleepy 评论0 收藏0
  • 《正规军的Python进阶路|Python技能测评

    摘要:每个模块都有对应的分支内容,并且分支内容都分为参考资料练习题交流讨论三个内容,我最喜欢的是练习题,之前都是非正规军的学习,没有系统训练过,现在有技能树测评终于可以把之前散乱的知识点总结在一起了。祝大家都能在技能树测评判断自己在哪个级别的。 通过《Python技能树测评》判断自己在哪个级别: ...

    jayzou 评论0 收藏0
  • 如何学习Python,CSDN帮你规划路线|Python技能测评

    摘要:具体来说,技能树是的一次新尝试,就是说通过大家的力量,来提供一个系统化,面向实战的学习环境。最后希望该板块能越做越好,更加贴近于实际这就是技能树内测地址,想体验的小伙伴们可以去试试 相信很多刚接触到python的朋友肯定是一头雾水,觉得python的知识点怎么那么多,自己到底该怎么学?即使有...

    Stardustsky 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<