命令行 - INT()参数必须是一个字符串,一个类字节对象或数字,而不是“列表”

问题描述 投票:1回答:1

我有一个非常基本的代码:

import sys

file = sys.argv[0]
arg = int(sys.argv[1:])

def multiplier(x):

    if arg < 1:
        print('Put an argument in')
    else:
        totals = 1
        for i in range(1,x+1):
            totals *= i
        return totals



print(multiplier(arg))

我试图从在命令行中运行这个,我不断收到此错误:

  File "program.py", line 4, in <module>
arg = int(sys.argv[1:])
TypeError: int() argument must be a string, a bytes-like object or a 
number, not 'list'

我理解的错误,但我是新来的命令行,所以我有点在命令行上下文混淆。

如果一切顺利,我希望这样的事情(输入/输出):

>>> Python program.py 10
   3628800

如果任何人有任何建议,这将是非常感谢!

python command-line sys
1个回答
3
投票

在方括号中的冒号表示前述列表对象的切片。在这种情况下,你只想要第二个项目(索引1),而不是一个列表的片段sys.argv从索引1开始:

arg = int(sys.argv[1])
© www.soinside.com 2019 - 2024. All rights reserved.