一、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代码没怎么写过,欢迎大家吐槽~~谢谢!