31

私は C に精通しており、Python で実験を始めました。私の質問は、sys.argvコマンドに関するものです。コマンドラインインタープリターに使用されていると読んだことがありますが、単純なプログラムを実行しようとすると、期待する結果が得られません。

コード:

import sys

a = sys.argv[1]
b = sys.argv[2]

print a, b

print a+b

入力:

python mySum.py 100 200

出力:

100 200
100200

2 つの引数を追加すると、2 つの値が加算されるのではなく、それらが連結されます。値は文字列として取得されているようです。

それらを数値として解釈するにはどうすればよいですか?

4

6 に答える 6

42

int() を使用して引数を整数に変換できます

import sys

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

print a, b

print a+b

入力:python mySum.py 100 200

出力:

100 200
300
于 2012-05-25T09:36:10.693 に答える
15

ユーザー入力も検証する必要があります。

import sys

def is_intstring(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

for arg in sys.argv[1:]:
    if not is_intstring(arg):
        sys.exit("All arguments must be integers. Exit.")

numbers = [int(arg) for arg in sys.argv[1:]]
sum = sum(numbers)

print "The sum of arguments is %s" % sum
于 2012-05-25T12:46:26.597 に答える
13

確かに、あなたは自分で問題を発見しましたsys.argv。文字列の配列です。

で文字列を整数に変換できますint()。この場合、例えば:a = int(sys.argv[1])

于 2012-05-25T09:36:49.007 に答える
5

sys.argvアイテムは常にstrings。でキャストする必要がintありint(a)ます。

OptParseなどの CLI 引数を処理するためにサードパーティ ライブラリを使用することもできます。

于 2012-05-25T09:37:43.467 に答える