在python中作为命令行参数传递的数字不会被解释为整数

Kal*_*yan 23 python argv

我熟悉C,并开始在python中进行实验.我的问题是关于sys.argv命令.我已经读过它用于命令行解释器,但是当我尝试执行一个简单的程序时,我没有得到我期望的结果.

码:

import sys

a = sys.argv[1]
b = sys.argv[2]

print a, b

print a+b
Run Code Online (Sandbox Code Playgroud)

输入:

python mySum.py 100 200
Run Code Online (Sandbox Code Playgroud)

输出:

100 200
100200
Run Code Online (Sandbox Code Playgroud)

当我添加两个参数时,它们被连接而不是两个值被加在一起.似乎这些值被视为字符串.

我怎样才能将它们解释为数字?

Wes*_*ley 33

您可以使用int()将参数转换为整数

import sys

a = int(sys.argv[1])  b = int(sys.argv[2])

print a, b

print a+b
Run Code Online (Sandbox Code Playgroud)

输入: python mySum.py 100 200

输出:

100 200
300
Run Code Online (Sandbox Code Playgroud)


Jan*_*cke 12

您还应该验证用户输入:

import sys

def is_intstring(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

for arg in sys.argv[1:]:
    if not is_intstring(arg):
        sys.exit("All arguments must be integers. Exit.")

numbers = [int(arg) for arg in sys.argv[1:]]
sum = sum(numbers)

print "The sum of arguments is %s" % sum
Run Code Online (Sandbox Code Playgroud)


Pet*_*mit 11

实际上,你自己找到了问题,sys.argv是一个字符串数组.

您可以将字符串转换为整数int().在这种情况下,例如:a = int(sys.argv[1])


And*_*rra 5

sys.argv项目总是strings. 你应该将它们转换为intwith int(a)

您还可以使用第三方库来处理 CLI 参数,例如OptParse