使用Jupyter Notebook中的输入运行python脚本

时间:2018-08-15 01:31:50

标签: python input jupyter-notebook

我创建了以下名为week1_1.py的Python脚本:

import sys
input = sys.stdin.read()
tokens = input.split()
a = int(tokens[0])
b = int(tokens[1])
print(a + b)

但是,当我从Jupyter Notebook中调用它时,出现以下异常:

%run -i week1_1 2 3

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
D:\Mint_ns\week1_1.py in <module>()
      8 input = sys.stdin.read()
      9 tokens = input.split()
---> 10 a = int(tokens[0])
     11 b = int(tokens[1])
     12 print(a + b)

IndexError: list index out of range

此异常可能是什么原因?

4 个答案:

答案 0 :(得分:1)

input_str = input()
tokens = input_str.split()
a = int(tokens[0])
b = int(tokens[1])
print(a + b)

ouput:
1 2
3

您可以使用input()代替sys.stdin.read()

为什么不能使用sys.stdin.read()sys.stdin.read()会读入stdin,直到命中EOF。因此,我猜测,当您在jupyter notebook中运行它时,在运行单元格时它将显示为EOF。(我不确定。)< / p>

但是input()将在jupyter notebook中正常运行。我建议您在获取键盘输入时使用input()而不是sys.stdin.read()

答案 1 :(得分:1)

要在Jupyter Notebook中获得用户输入,请使用input()(对于Python 2使用raw_input()):

Example 2 showing input

希望这会有所帮助!

答案 2 :(得分:0)

一种更简单的方法是使用raw_input而不是stdin.read

tokens = raw_input().split()
a = int(tokens[0])
b = int(tokens[1])
print(a + b)

答案 3 :(得分:0)

OR:

print(sum(int(i) for i in input().split()))

示例输出:

1 1
2