Как я могу использовать / получить элемент списка из пространства имен? - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь написать программу Python, которая будет принимать данный список и возвращать среднее значение.

#program name: average.py, author: Leo

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-lst", nargs='+', type=int, required=True)
xyz = parser.parse_args()

def GetAvg(xyz):
    total = 0
    for i in xyz:
        total = total + i

    finalAvg = total / len(xyz)
    return finalAvg

if __name__ == "__main__":
    GetAvg(xyz)

Когда я запускаю его в командной строке cmd, я запускаю его как

python average.py -lst 4 5 7 3 2

Однако я всегда получаю сообщение об ошибке: 'Namespace' object is not iterable.

Когда Я делаю print(xyz), он возвращает "Namespace(lst=[4, 5, 7, 3, 2])".

Итак, мой вопрос: как мне заставить эту функцию использовать список в пространстве имен? или я использую какую-то другую функцию argparse для выполнения sh этого?

Я прошу прощения за любой неправильный синтаксис или стиль, первое сообщение в StackOverflow.

1 Ответ

0 голосов
/ 30 марта 2020

Парсер возвращает пространство имен со всеми аргументами, вам нужно получить доступ к указанному аргументу c. Вот ваша программа с несколькими комментариями:

import argparse


def get_avg(xyz):  # use pep8-style names (get_avg instead of GetAvg)
    total = sum(xyz)  # use predefined Python functions
    return total / len(xyz)


if __name__ == "__main__":
    # put all of the main program here so that it is not executed 
    # if the function is called from elsewhere
    parser = argparse.ArgumentParser()  
    parser.add_argument("-lst", nargs='+', type=int, required=True)
    xyz = parser.parse_args().lst  # access the needed argument
    print(get_avg(xyz))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...