2016-09-21 3 views
-1

でパラメータに対処するために、私はから引数を印刷:はどのようにスクリプト

if __name__ == '__main__': 
    print('The sys.argv is :\n',sys.argv) 

と、すべてのパラメータは文字列に転送し、私はそれに対処する方法がわからないことがわかります。

コマンドpython3 MAX_HEAPIFY.py [1,2,3,4,5,6,7,8,9,10] 2

出力:['MAX_HEAPIFY.py', '[1,2,3,4,5,6,7,8,9,10]', '2']

+0

* *それらが受信され、文字列のリストとして* "それに対処する方法がわからない" *まあ、あなたはそれらと何をしたいですか? –

+0

@Jim「タプル」や「リスト」ではなく、リストやタプルなどの入力したいタイプとしてこれらのパラメータを扱いたい – user5713594

+0

質問を編集し、サンプル入力を追加して、リストを実際に見たいものを追加します;私たちはここに想像することができません。 –

答えて

0

あなたは、Pythonは文字列として、コマンドライン上のすべての入力を受け付けることを理解する必要があります。あなたのコード内のargsを処理するのはあなた次第です。

理想的には、これをより堅牢にするために​​を使用しますが、この例のために次のようなコマンドを実行することができます。

python3 MAX_HEAPIFY.py "1,2,3,4,5,6,7,8,9,10" 2 

次にあなたがリストとしてあなたの最初の引数を処理するためにmy_list = sys.argv[1].split(",")を使用しますが。

明らかに、型キャスティングやロジック固有のことに対処する必要がありますが、これが出発点です。

編集:

あなたはint型のリストにmy_listを変換する必要がある場合、あなたはこのようにリストの内包表記を使用することができます:「すべてのパラメータが文字列に移す」

my_int_list = [int(i) for i in my_list if i.isdigit()] 
+0

ありがとう、私はいつも文字列 '[1,2,3 ...]'を処理しようとするが、それらはすべてfault.Actually、私は見つけることができません[int(x)] 'それは私に奇妙な結果を与えるドキュメントが照らされているので、すべてのパラメータが文字列に変換されます。 – user5713594

+0

'my_list = sys.argv [1] .split("、 ")'を試しましたか?最初のパラメータを文字列のリストに変換する必要があります。 – sisanared

+0

または恐ろしい['eval'](https://docs.python.org/2/library/functions.html#eval)を使うことができます。 – CristiFati

関連する問題