整数参数错误
Integer Arguments Error
我正在尝试编写一个采用两个整数参数的程序。经过一些研究,我了解到在定义参数时需要使用 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 Notebook 中 运行 这段代码。 运行 终端中的相同代码抛出此错误:
>>> import sys
>>> a = int(sys.argv[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
您还没有将 argv 分配给任何东西。 Argv 包含来自 shell 的 python 脚本 运行 的命令行参数。 Learn about argv here: Run in the terminal, argv will be an empty list with zero elements. So argv[0] and argv1 无法访问(它们不存在)。
当您在 Jupityer notebook 中 运行 脚本时,notebook 本身具有命令行参数 'higher up'。你的第一个参数不是你想要的(无论你输入什么整数),所以你不能转换它的类型。
您可以通过三种方式编写程序:
- 直接从脚本工作
- 命令行参数
- 在 运行 时间
期间输入
您甚至可能不需要使用命令行参数。
def add_from_user_input():
a = input('first number')
b = input('second number')
return a+b
我正在尝试编写一个采用两个整数参数的程序。经过一些研究,我了解到在定义参数时需要使用 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 Notebook 中 运行 这段代码。 运行 终端中的相同代码抛出此错误:
>>> import sys
>>> a = int(sys.argv[1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
您还没有将 argv 分配给任何东西。 Argv 包含来自 shell 的 python 脚本 运行 的命令行参数。 Learn about argv here: Run in the terminal, argv will be an empty list with zero elements. So argv[0] and argv1 无法访问(它们不存在)。
当您在 Jupityer notebook 中 运行 脚本时,notebook 本身具有命令行参数 'higher up'。你的第一个参数不是你想要的(无论你输入什么整数),所以你不能转换它的类型。
您可以通过三种方式编写程序: - 直接从脚本工作 - 命令行参数 - 在 运行 时间
期间输入您甚至可能不需要使用命令行参数。
def add_from_user_input():
a = input('first number')
b = input('second number')
return a+b