:我希望这个程序在命令行上运行。但是,我收到了一个错误。我做错了什么?
# 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>
答案 0 :(得分: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
参数默认为字符串,因此无需再次显式转换它们。
答案 1 :(得分:3)
sys.argv
中的值都是字符串。您需要将其他转换为您需要的任何非字符串类型,而不是尝试将某些字符串转换为字符串。如果您希望中间的一个是整数,请在其上调用int
。
答案 2 :(得分:2)
所有命令行参数都被Python视为字符串。
将您的电话改为
appender(sys.argv[1], int(sys.argv[2]), sys.argv[3])