Argv-字符串转换为整数

2024-06-16 13:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

TypeError: %d format: a number is required, not 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)

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

谢谢你的帮助。


Tags: 程序formatnumberis错误intprint新手
3条回答

运行int(argv[1])实际上并不会更改argv[1](或分配给它的num1)的值。

替换为:

int(argv[1])
int(argv[2])

有了这个:

num1 = int(num1)
num2 = int(num2)

它应该起作用。

int(..)、str(…)等函数不会修改传递给它们的值。相反,它们返回对不同类型数据的重新解释。

sys.argv确实是一个字符串列表。使用int()函数将字符串转换为数字,前提是字符串可以被转换。

您需要分配结果,但是:

num1 = int(argv[1])
num2 = int(argv[2])

或者简单地使用:

num1, num2 = int(num1), int(num2)

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

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

num1 = int(argv[1])  #assign the return int to num1
num2 = int(argv[2])

只是:

int(argv[1])
int(argv[2])

不会影响原始项,因为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

相关问题 更多 >