командная строка - аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не «списком» - PullRequest
0 голосов
/ 04 февраля 2019

Я получил очень простой код:

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

Если у кого-то есть какие-либо предложения, это будет высоко оценено!

1 Ответ

0 голосов
/ 04 февраля 2019

Двоеточие в квадратных скобках обозначает срез предыдущего объекта списка.В этом случае вам нужен только второй элемент (с индексом 1), а не фрагмент списка sys.argv, начинающийся с индекса 1:

arg = int(sys.argv[1])
...