Как я могу подать рациональное или иррациональное число в argparse? - PullRequest
0 голосов
/ 28 декабря 2018

Как я могу передать рациональные числа, такие как 3/2, через терминал, в мой скрипт на python, используя argparse?У меня та же проблема, когда я хочу ввести число pi или любые другие иррациональные числа, такие как sqrt (2), используя argparse.

С уважением, Хади

1 Ответ

0 голосов
/ 29 декабря 2018

При

import argparse
import sys
print(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument('aNumber')
args = parser.parse_args()
print(args)

примерных прогонов:

1414:~/mypy$ python3 stack53964076.py -h
['stack53964076.py', '-h']
usage: stack53964076.py [-h] aNumber

positional arguments:
  aNumber

optional arguments:
  -h, --help  show this help message and exit
1417:~/mypy$ python3 stack53964076.py 3/2
['stack53964076.py', '3/2']
Namespace(aNumber='3/2')
1417:~/mypy$ python3 stack53964076.py pi
['stack53964076.py', 'pi']
Namespace(aNumber='pi')
1417:~/mypy$ python3 stack53964076.py sqrt(2)
bash: syntax error near unexpected token `('
1417:~/mypy$ python3 stack53964076.py 'sqrt(2)'
['stack53964076.py', 'sqrt(2)']
Namespace(aNumber='sqrt(2)')

Во всех этих случаях args.aNumber будет строкой.В последнем случае мне пришлось включить кавычки, чтобы предотвратить попытку оболочки анализировать сам символ '('.

. Обработка этих строк является ответственностью вашего собственного кода, а не argparse.

...