整数参数错误

时间:2017-03-31 19:21:57

标签: python arguments sys

我正在尝试编写一个带有两个整数参数的程序。经过一些研究,我了解到在定义参数时我需要使用int()函数。但是,当我尝试这段代码时出现错误:

import sys

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

我收到此错误:

ValueError                                Traceback (most recent call last)
<ipython-input-11-7a4a02a9d164> in <module>()
----> 1 a, b = int(sys.argv[1]), int(sys.argv[2])

ValueError: invalid literal for int() with base 10: '-f'

尽管经过研究,我还是无法解决这个问题。这可能与我的python版本有关吗?

提前致谢。

编辑:我在Jupyter笔记本中运行此代码。在终端中运行相同的代码会引发此错误:

>>> import sys
>>> a = int(sys.argv[1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

1 个答案:

答案 0 :(得分:-1)

您尚未将argv分配给任何内容。 Argv包含从shell运行的python脚本的命令行参数。 L earn about argv here:在终端中运行,argv将是一个零元素的空列表。因此无法访问argv [0]和argv 1(它们不存在)。

当您在Jupityer笔记本中运行脚本时,笔记本本身的命令行参数“更高”。你的第一个参数不是你想要的(无论你输入的是什么整数),所以你不能转换它的类型。

您有三种编写程序的选项:   - 直接从脚本工作   - 命令行参数   - 在运行时输入

您甚至可能不需要使用命令行参数。

def add_from_user_input():
    a = input('first number')
    b = input('second number')
    return a+b