我正在使用argparse制作基本计算器。我基本上接受命令行中的一些数字,然后是加,减,乘或除动作。我现在只有添加部分。 这是我的代码:
import argparse
from sys import argv
def get_args(args):
parser = argparse.ArgumentParser(description = 'Calculator')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--add',dest = 'sum',help = "Adds the set of numbers")
parser.add_argument('--subtract',
help = "Subtracts the set of numbers")
args = parser.parse_args()
def main(argv):
args = get_args(argv[0:])
if args.a or args.add:
return sum(args)
if __name__ == "__main__":main(argv)
但是,当我输入时:
calculator.py 1 2 3 --add
它给了我错误:期望一个参数,并且在python中有一个函数sum(),但是还有减法,乘法和除法函数吗?如果没有,那么如何在不使用sum()函数的情况下返回总和。我假设您将使用for循环遍历所有数字?
因此使用for循环将是这样的:
def main:
args = get_args(argv[0:])
if args.a or args.add:
for row in argv[1:]:
sum = sum + argv[row]
print sum
答案 0 :(得分:2)
您的--add
命令行开关想要参数。改为改为开关:
parser.add_argument('--add', action='store_true', help="Adds the set of numbers")
请注意,我删除了dest
参数,您希望结果存储在args.add
中,而不是args.sum
。
您的get_args()
函数需要返回 parser.parse_args()
的结果:
def get_args(args):
# ....
return parser.parse_args()
不会有args.a
,只测试args.add
,并且您希望对args. integers
属性求和,而不是args
命名空间对象本身。您可能想要打印结果:
if args.add:
print sum(args.integers)
如果您想使用循环,请循环遍历args.integers
:
if args.add:
result = 0
for value in arg.integers:
result += value
print result