2017-03-31 13 views
-1

2つの整数引数を取るプログラムを作成しようとしています。いくつかの研究の後で、私は引数を定義するときにint()関数を使う必要があることを知りました。しかし、私はこのコードをしようとすると、私はエラーを取得する:整数引数エラー

import sys 

a, b = int(sys.argv[1]), int(sys.argv[2]) 

私はこのエラーを取得する:

ValueError        Traceback (most recent call last) 
<ipython-input-11-7a4a02a9d164> in <module>() 
----> 1 a, b = int(sys.argv[1]), int(sys.argv[2]) 

ValueError: invalid literal for int() with base 10: '-f' 

私は研究にもかかわらず、この問題を解決することはできませんされてきました。これはおそらく私のpythonバージョンに関連する問題ですか?

ありがとうございます。

EDIT:このコードはJupyter Notebookで実行しています。ターミナルで同じコードを実行すると、次のエラーがスローされます。

>>> import sys 
>>> a = int(sys.argv[1]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list index out of range 
+3

スクリプトをどのように実行していますか?エラーは、引数の1つが '-f'であり、整数に変換できないことを示しています。 – BrenBarn

+1

どのようにあなたのpythonスクリプトを実行していますか? – Himaprasoon

+0

私はこれをJupyter Notebookでインタラクティブにやっています。これはプログラムを作成する適切な方法ではありませんか? @BrenBarn –

答えて

-1

あなたは何にもargvを割り当てていません。 Argvには、シェルから実行されるpythonスクリプトのコマンドライン引数が含まれています。 L earn about argv here:端末で実行すると、argvは要素がゼロの空のリストになります。 argv [0]とargv 1はアクセスできません(存在しません)。

Jupityerノートブックでスクリプトを実行すると、ノートブック自体にコマンドライン引数 'higher up'があります。あなたの最初の議論はあなたが望むものではありません(あなたが入力した整数どんなものでも)、そのタイプを変換することはできません。 - スクリプト から直接操作 - コマンドライン引数 - 入力ランタイム

中のあなたも、コマンドライン引数を使用する必要がないかもしれません :

あなたがプログラムを書くための3つのオプションがあります。

def add_from_user_input(): 
    a = input('first number') 
    b = input('second number') 
    return a+b 
+1

非常に有益な答えをありがとう。私はあなたが指摘した関係を知らなかったし、今これをより完全に理解するために軌道に乗っている。とても有難い! –

+0

ありがとうございます。これは私が良い気分になります:) –