繁体   English   中英

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

[英]Running a python script with inputs from within 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

造成此异常的原因可能是什么?

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当您运行的细胞。( 我不知道)。

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

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

示例2显示输入

希望这可以帮助!

一种更简单的方法是使用raw_input代替stdin.read

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

要么:

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

输出示例:

1 1
2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM