2017-06-09 11 views
0

pythonで新しくなっています。cmdに2つの数字を追加しています。cmdに出力されていますが、pythonシェルでエラーが発生しています。 Pythonシェル3.3.2。なぜ誰かが私のコードがPythonシェルで動いていないのか教えていただけますか?Pythonシェルがエラーを表示していますが、cmdがそのプログラムを実行しています

コード:

import sys 
n=int(sys.argv[1]) 
m=int(sys.argv[2]) 
print(n+m) 

エラー:

Traceback (most recent call last):

File "C:/pythonprogram/add.py", line 4, in

n=int(sys.argv[1]) 

IndexError: list index out of range

+0

あなたは、引数の正しい量を使用してプログラムを実行していますか?上記のコードを実行してエラーを表示すると、シェル – kuro

+0

でスクリプトをどのように実行しているかを示してください。 python shellはcmdのようなパラメータを取るのですか? –

答えて

0

sys.argvは、コマンドラインパラメータが含まれています。 Pythonシェルでスクリプトを実行すると、パラメータを送信しない可能性が高くなります。

import sys 

if len(sys.argv) > 2: 
    n=int(sys.argv[1]) 
    m=int(sys.argv[2]) 
    print(n+m) 

チェックthisアウトのPythonについての詳細を知るためにとsys.argv

+0

いいえ動作していません –

+0

**正確に**は問題ですか? – moritzg

+0

'sys。argvは常に少なくとも1つの要素を含んでいます。その場合、少なくとも3つのアイテムを確認する必要があります。 – Euphe

0

あなたのプログラムは2つのコマンドライン引数を期待している:私はこのような現在のコマンドライン引数がある場合は、チェックを追加することを示唆しています。 sys.argvは、コマンドライン引数のリストのです。エラーIndexError: list index out of rangeは、(インデックス1の)リスト項目番号2を取得しようとしましたが、そのリストには多くの値がないことを示しています。あなたは、シェルでそのエラーを再現することができます

>> alist = ['Item 0'] 
>> print(alist[1]) 

連想リストだけ高いインデックスを持つインデックス0要求項目とアイテムを持っているので、そのエラーが発生します。

今、あなたの正確な問題。プログラムは、期待されるコマンドライン引数をあなたに伝えていますが、提供されていません。それらを提供する! を実行し、このコマンド:

python add.py 1 2 

これは、スクリプトを実行し、2番目の引数として最初の引数、2として1を渡します。 は、あなたのケースでは一般的なフォーマットはsys.argv[0]が、その後、あなたのn数がsys.argv[1]に割り当てられません理由いずれかであるか疑問に思う(あなたがする必要があります)あなたがかもしれないその時点で

python add.py [n] [m] 

です。 sys.argv[0]は実行中のスクリプトの名前です。コマンドライン引数に

さらに読書:

http://www.pythonforbeginners.com/system/python-sys-argv

追加。 あなたはより説明するスクリプトを修正することができます:

import sys 
if len(sys.argv) < 3: #script name + 2 other arguments required 
print("Provide at least two numbers") 
else: 
n=int(sys.argv[1]) 
m=int(sys.argv[2]) 
print(n+m) 
関連する問題