3

Windows の場合: このプログラムをコマンドラインで実行したいと思います。ただし、エラーが発生します。私は何を間違っていますか?

# create a method that append the letter stored in variable letter, ntimes.

import sys
def appender(letter,ntimes, sentence):
    print sentence+(letter*ntimes)


appender(str(sys.argv[1]),sys.argv[2], str(sys.argv[3]))

以下は、Windowsのコマンドラインから取得したエラーです

C:\Users\QamarAli\Documents\afaq's stuff>appender.py "F" 10 "Hello this is sent"

Traceback (most recent call last):
  File "C:\Users\QamarAli\Documents\afaq's stuff\appender.py", line 8, in <modul
e>
    appender(str(sys.argv[1]),sys.argv[2], str(sys.argv[3]))
  File "C:\Users\QamarAli\Documents\afaq's stuff\appender.py", line 5, in append
er
    print sentence+(letter*ntimes)
TypeError: can't multiply sequence by non-int of type 'str'

C:\Users\QamarAli\Documents\afaq's stuff>
4

3 に答える 3

5

エラーはかなり明確です:

TypeError: can't multiply sequence by non-int of type 'str'

数列 (この場合は文字列) を数値以外で乗算しようとしています。引数を整数に変換します。

appender(sys.argv[1], int(sys.argv[2]), sys.argv[3])

また、sys.argv引数はデフォルトで文字列であるため、再度明示的に変換する必要はありません。

于 2012-12-24T00:09:34.233 に答える
3

の値sys.argvはすべて文字列です。一部を文字列に変換しようとする代わりに、他のものを必要な非文字列型に変換する必要があります。真ん中のものを整数にしたい場合は、それを呼び出しintてください。

于 2012-12-24T00:09:20.023 に答える
2

すべてのコマンドライン引数は、Python から文字列として認識されます。

通話を次のように変更します

appender(sys.argv[1], int(sys.argv[2]), sys.argv[3])
于 2012-12-24T00:09:28.900 に答える