-2

これがコードです。修正を手伝ってください。

#!/usr/bin/env python

import sys

def print5times(line_to_print):
        for count in range(0,5) :
                print line_to_print

print5times(sys.argv[1])

このコードを実行すると、次のエラーが発生します。

 Traceback (most recent call last):
   File "./func.py", line 9, in <module>
     print5times(sys.argv[1])
 IndexError: list index out of range
4

2 に答える 2

1

sys.argv[1]コマンド ラインで渡される 2 番目の引数を指定します。

これIndexErrorは、スクリプトに十分な引数を渡していないことが原因です。

これを正しく行ったとしても、現在のスニペットでは、関数名が示すように、引数を 5 回ではなく 9 回出力することになります。

于 2016-12-03T10:28:44.683 に答える
0

スクリプトで sys.argv[1] の意味を見てください

これで、Python コードで、この文字列のリストをプログラムへの入力として使用できます。リストはゼロベースの整数でインデックス付けされるため、list[0] 構文を使用して個々の項目を取得できます。たとえば、スクリプト名を取得するには:

script_name = sys.argv[0] # this will always work.

これは興味深いことですが、スクリプト名を知る必要はほとんどありません。ファイル名のスクリプトの後の最初の引数を取得するには、次のようにします。

filename = sys.argv[1]

これは非常に一般的な使用法ですが、引数が指定されていない場合は IndexError で失敗することに注意してください。

于 2016-12-03T11:18:37.700 に答える