2011-01-23 10 views
-2

のために私はPythonでループのために、この作業を私の作成した作り:は、ループの実行

a = 'word' 

for i in range(len(a)): 

print a[i:] + a[:i], (a[i:] + a[:i])[::-1] 

と私はコマンドラインから実行可能なことを確認する必要があり、また、新しい引数に取ることができる持っています。

私はこれを行う方法が少し曇っています。私はあなたが

if __name__ == '__main__': 

何とか...そして、私は誰もがこれを行う方法を説明することができた場合、sys.argvの

を使用する必要があること、およびから任意のスクリプトを実行可能に作るためのフォーマットを使用する必要があることを知っていますコマンドライン、私は本当にそれを感謝します。

+3

downvotesコメントなし。 – joaquin

+0

私は確かにdownvotesは人々がOPの質問を理解していないためにそこにあると確信しています。実際にはループに対して実行可能ではありませんが、コマンドラインパラメータを追加する方法が増えています。 –

答えて

2

あなたは単に

import sys 
a = sys.argv[1] 
etc.. 

を書き込み、実行することができます。

python yourcode.py argument 

if __name__=='__main__': 

必要とされていませんが、あなたはまた、その下にあなたの全体のコードを置くことができます。 "python yourcode.py"のようなプログラムを実行し、別の.pyファイルに "yourcodeをインポートする"と書いたときにif文が実行されないようにするためにのみ実行されるコードを指定するのが目的です。

+0

私はimport sysをタイプすることなくスクリプトを実行できる必要があります...だから、 "import sys"は私のコードの一部である必要があります。私はそれがなぜ__name__ == '__main__':が必要なのかと考えています... – SexyLlama

+0

私はsysをインポートせずにコマンドライン引数を取得する方法を知らない。しかし、それ自体はname == mainとは関係ありません。 – kynnysmatto

+1

@SexyLlama:この回答の最初のコードスニペットは、Pythonコードの先頭に置くことを意図しています。そして、あなたのforループで 'など。 'ビットを置き換えることを忘れないでください。 –

0
import sys 
if __name__ == '__main__': 
    a = sys.argv[1] #sys.argv[0] is your file name, and [1] is the next argument 
    for i in range(len(a)): 
     print a[i:] + a[:i], (a[i:] + a[:i])[::-1] 

その後は、単にファイルとディレクトリに変更し、同じようにそれを呼び出す:コマンドラインで

python file.py wordHere 

2

あなたはPythonスクリプトを持つようにしたいどのよう柔軟に応じて、私はそうのようなスクリプトを構築します:

def get_args(): 
    # logic for parsing arguments here 
    # return e.g. a dictionary 

def your_method(arg1=None,arg2=...): 
    # further logic 

if __name__ == "__main__": 
    args = get_args() 
    your_method(**args) 

コマンドライン引数を解析する様々なモジュールがあります。 argparse(より簡単)とoptparseをご覧ください。

コマンドライン引数に簡単にアクセスする必要がある場合は、sys.argvを使用できます。

この分離によって、関数を他のコードにインポートすることもできます。

例:

import sys 

def get_args(): 
    word = sys.argv[1] if (len(sys.argv) > 1) else '' 
    return {"word": word} 

def your_method(word=''): 
    for i in range(len(word)): 
     print word[i:] + word[:i], (word[i:] + word[:i])[::-1] 

if __name__ == "__main__": 
    args = get_args() 
    your_method(**args) 

python yourscript.py someword 

でそれを実行するには参照:

関連する問題