плохо знаком с argParse, не уверен, где моя ошибка - PullRequest
1 голос
/ 31 октября 2019

Я совершенно новичок в Python, только начал сегодня и разбираюсь с Python. Запуск его в Visual Studio, между прочим.

Наткнулся на import argParse, и вот тут меня немного смутило. У меня есть какой-то код, который я пытаюсь заставить работать, но этого не произойдет, и я совершенно не понимаю. Я получаю сообщение об ошибке args = parser.parse_args(), и я не знаю почему. Код ниже

import math
import argparse

parser = argparse.ArgumentParser(description='calculate')
parser.add_argument('radius', type=int, help="radius plzz")
parser.add_argument('height', type=int, help="height plzz")
args = parser.parse_args()


def cylinder_volume(radius, height):
    vol = (math.pi) * (radius ** 2) * height
    return vol

if __name__ == '__main__':
    print(cylinder_volume(args.radius, args.height))

У меня есть представление о том, что происходит в этом коде, но я не знаю, почему он не будет работать так, как ожидалось? Может быть, потому что я использую Visual Studio? Может быть, мне нужно импортировать что-то еще ..

У меня есть изображение ошибки! enter image description here

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

args = parser.parse_args() анализирует аргументы командной строки (доступные в виде списка sys.argv) и создает первый аргумент args.radius и второй аргумент args.height для вызовов метода add_argument. Поэтому все, что вам нужно сделать, это запустить скрипт из командной строки с двумя целочисленными аргументами, например:

script_name.py 123 456

, или чтобы протестировать его в среде IDE, такой как Visual Studio, вы можете передать список аргументов. вместо parse_args:

args = parser.parse_args(['123', '456'])

, который выводит:

21673294.79680895
0 голосов
/ 31 октября 2019

вы можете добавить 'dest = (str)' для отправки аргумента в качестве атрибута аргументов.

parser.add_argument(
          'radius',
          type=int,
          help="radius plzz",
          dest='radius'
         )
parser.add_argument(
                'height',
                type=int,
                help="height plzz",
                dest='height'
               )

Затем вы можете вызывать аргументы, как вы это делали в:

print(cylinder_volume(args.radius, args.height))
...