簡體   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