Argv - String into Integer

And*_*tte 9 python argv

我是python的新手,我一直在玩argv.我在这里写了这个简单的程序并得到一个错误,上面写着:

TypeError:%d format:需要一个数字,而不是str

from sys import argv

file_name, num1, num2 = argv
int(argv[1])
int(argv[2])
def addfunc(num1, num2):
    print "This function adds %d and %d" % (num1, num2)
    return num1 + num2

addsum = addfunc(num1, num2)
print "The final sum of addfunc is: " + str(addsum)
Run Code Online (Sandbox Code Playgroud)

当我运行filename.py 2 2时,argv是否将2 2放入字符串中?如果是这样,我如何将这些转换为整数?

谢谢你的帮助.

Mar*_*ers 18

sys.argv确实是一个字符串列表.如果可以转换int()字符串,请使用该函数将字符串转换为数字.

但是,您需要分配结果:

num1 = int(argv[1])
num2 = int(argv[2])
Run Code Online (Sandbox Code Playgroud)

或者只是使用:

num1, num2 = int(num1), int(num2)
Run Code Online (Sandbox Code Playgroud)

您确实调用了int()但忽略了返回值.


Ash*_*ary 5

将转换后的整数分配给这些变量:

num1 = int(argv[1])  #assign the return int to num1
num2 = int(argv[2])
Run Code Online (Sandbox Code Playgroud)

只做:

int(argv[1])
int(argv[2])
Run Code Online (Sandbox Code Playgroud)

不会影响原始项目,因为int返回一个新int对象,里面的项目sys.argv不受此影响。

哟修改原始列表你可以这样做:

argv[1:] = [int(x) for x in argv[1:]]
file_name, num1, num2 = argv  #now num1 and num2 are going to be integers
Run Code Online (Sandbox Code Playgroud)