一、Jupyter Notebook是什么

Jupyter Notebook ,源自IPython Notebook,是一个交互式、支持多种编程语言的笔记本(以下简称Jupyter)。Jefferson目前只用它写过Python代码,因此下文相关叙述均可认为是Jupyter for Python。

二、Jupyter可以做什么

不同于Notepad++、Sublime Text、Vim等工具,Jupyter是基于Web浏览器工作的。也就是说我们将代码写在浏览器打开的一个页面里,然后在页面上发送代码执行命令,代码执行结果依然会显示在这个页面上,同时Jupyter Notebook会将所有的代码、数学公式、图表、输出结果等都保存起来。

三、怎么用Jupyter

Jupyter使用IPython解释执行Python代码,因此如果你想使用Jupyter,你得安装IPython。官方推荐 安装Anaconda,Jefferson也是安装的Anaconda,安装完之后,在终端输入:

ipython notebook

即会在浏览器中打开Jupyter的页面。

四、开始用Jupyter

1. 熟悉界面

按照上边说的打开了Jupyter页面之后,可以先点击页面菜单栏Help - User Interface Tour,这样会引导我们认识下Jupyter的界面。

左上角Jupyter logo旁边可以编辑,编辑修改后的名字就是这个笔记本的文件名。如果你每天写一点代码,不妨将这个文件名就叫做当天的日期,比如20170604。

中间的编辑区域,就是我们写代码的地方了,一个区块中可以输入一行代码,也可以输入多行代码。单行代码对应line,区块中多行代码对应cell。这个概念在下边的magic command那里需要用到。

右上角Python logo底下的圆圈或者方框分别表示当前kernel为idle还是busy状态,圆圈左边表示当前使用的是哪个kernel,再左边显示的当前所在的mode,也就是下边要介绍的。

2. 2种模式

在使用Jupyter时,有两种模式,分别为edit mode和command mode,分别对应编辑模式和命令模式。当处于edit mode时,右上角Python logo左边那里会有一支笔,且当前那个区块的边缘线会高亮呈现绿色,处于命令模式就没有。

从edit mode切换到command mode,方法很简单,直接按键盘上的Esc,或者使用鼠标点击当前高亮的区块以外的区域即可。了解当前处于哪种模式很重要,因为相应的快捷键只会在对应的模式下才有效。

3. 常用快捷键

在command mode下常用的快捷键

  • 向前插入一个区块,按键盘上的a
  • 向后插入一个区块,按键盘上的b
  • 删除当前选的区块,按两次键盘上的d
  • 执行当前区块的代码,按键盘的Ctrl+Enter
  • 复制选择的区块,按键盘的c
  • 粘贴选择的区块,按键盘的v
  • 剪切选择的区块,按键盘的x
  • 保存当前文件,按键盘的s
  • 切换到edit mode,按键盘的Enter

在edit mode下常用的快键键

  • 到下一行,按键盘的Enter
  • 补全代码,按键盘的Tab
  • 切换到command mode,按键盘的Ctrl+m
  • 切换到当前区块的开始部分,按键盘的Ctrl+Home
  • 切换到当前区块的结束部分,按键盘的Ctrl+End
  • 查看tooltip,按键盘的Shift+Tab

4. magic command

magic command实际上是IPython提供的功能,使用这些命令,可以快速执行一些操作,如执行Python脚本、列举当前目录文件、切换工作目录、测试程序代码运行时间、程序性能分析等。

要查看所有的magic command,可以输入:

%lsmagic

然后按Ctrl+Enter执行,就可以看到类似如下返回:

常用的magic command

  • %run some_code.py,执行some_code.py这个脚本
  • %timeit some_statement,迭代运行计算该statement所需的时间
  • %time some_statement,计算该statement运行所需的时间
  • %ls,查看当前目录的文件
  • %cd some_directory,切换到some_directory这个目录
  • %less some_file.txt,查看some_file.txt的内容
  • %pwd,打印当前工作目录

更加详细的magic command和使用样例,可以输入%magic按Ctrl+Enter返回得到

五、some toy code

看到Github上一个Python练习题的帖子,当是熟悉Jupyter,跟着做了两个:

猜数字

#guess the number game
import random as rand
number = rand.randint(1, 99)
guess_number = int(input("你猜我选的是哪个数字(1-99):"))
while number != guess_number:
    if number > guess_number:
        guess_number = int(input("你猜的数字偏小,请继续猜:"))
    else:
        guess_number = int(input("你猜的数字偏大,请继续猜:"))
print("恭喜,你猜对啦!")

fizz buzz

# 整除3,则输出fizz;整除5则输出buzz;若同时整除3和5,则输出fizzbuzz
for i in range(100):
    if i%3==0:
        if i%5==0:
            print('fizzbuzz', end=',')
        else:
            print('fizz', end=',')
    elif i%5==0:
        print('buzz', end=',')
    else:
        print(i, end=',')

P.S. WordPress上贴代码真是太痛苦啦……

Python代码没怎么写过,欢迎大家吐槽~~谢谢!

 

发表评论

电子邮件地址不会被公开。

Post Navigation