Python 仅读取命令行参数的一部分

Python 仅读取命令行参数的一部分,python,Python,每当我通过命令行给出一个数字,比如说92,它只取9,完全忽略2。但是,如果我使用arg[1],它将使用2而不是9。 导入系统 for arg in sys.argv: print arg print "" print "-----" print "" try: argNumber = int(arg[0]) except ValueError: argNumber = 0 print "This is wrong" for i in rang

每当我通过命令行给出一个数字,比如说92,它只取9,完全忽略2。但是,如果我使用arg[1],它将使用2而不是9。 导入系统

for arg in sys.argv:
    print arg

print ""    
print "-----"
print ""    

try:
    argNumber = int(arg[0])
except ValueError:
    argNumber = 0
    print "This is wrong"

for i in range(argNumber, 0, -1):
    print i

此外,由于某些原因,我无法在Exception ValueError中添加打印“This is Error”行。它给了我一个缩进错误?

问题是您在
arg[0]
上调用int。现在,
arg
是初始循环的剩余部分,当您在
sys.argv
中查看所有参数时,它是该循环的最后一个元素。因此,当您使用
[0]
对其进行切片时,实际上是从最后一个参数中获取第一个字符,而不是您想要的第一个参数


您的解决方法是在那里简单地使用
sys.argv[1]

问题是您正在
arg[0]
上调用int。现在,
arg
是初始循环的剩余部分,当您在
sys.argv
中查看所有参数时,它是该循环的最后一个元素。因此,当您使用
[0]
对其进行切片时,实际上是从最后一个参数中获取第一个字符,而不是您想要的第一个参数


您的解决方法是在那里简单地使用
sys.argv[1]

这是因为
arg[0]
是分配给
arg
的字符串的第一个元素。在代码中,这是最后一个命令行参数


使用
int(arg)
解决问题。

这是因为
arg[0]
是分配给
arg的字符串的第一个元素。在代码中,这是最后一个命令行参数


使用
int(arg)
修复此问题。

您正在使用循环变量
arg
,因此您正在访问sys.argv[1]
的第一个字符,而不是整个字符串。尝试:

try:
    argNumber = int(sys.argv[1])
except ValueError:
    argNumber = 0
我在你的代码片段中没有看到“这是错误的”这一行,所以我不能对此发表评论


最后,在每行前面放置4个空格是目前唯一的方法。如果他们支持某种风格的代码保护(比如GitHub),那就太好了,但他们不:-(

您使用的是循环变量,
arg
,因此访问的是
sys.argv[1]
的第一个字符,而不是整个字符串。请尝试:

try:
    argNumber = int(sys.argv[1])
except ValueError:
    argNumber = 0
我在你的代码片段中没有看到“这是错误的”这一行,所以我不能对此发表评论


最后,在每行前面放置4个空格是目前唯一的方法。如果他们支持某种类型的代码隔离(如GitHub),那就好了,但他们不支持:-(

在循环运行后,arg以字符串形式包含最后传递的参数的值

在您的特定情况下,
arg='92'
。因此,当您执行
arg[0]
时,您将得到
'9'
,而
arg[1]
将为您提供
'2'


如果需要第一个参数,请使用sys.argv[1]。

循环运行后,arg包含传递的最后一个参数的值,作为字符串

在您的特定情况下,
arg='92'
。因此,当您执行
arg[0]
时,您将得到
'9'
,而
arg[1]
将为您提供
'2'

如果需要第一个参数,请使用sys.argv[1]。

在此循环之后

for arg in sys.argv:
    print arg
arg
是最后一个命令行参数。它是一个字符串,因此使用例如
arg[0]
获取该字符串中的第一个字符。

在此循环之后

for arg in sys.argv:
    print arg

arg
是最后一个命令行参数。它是一个字符串,因此使用例如
arg[0]
获取该字符串中的第一个字符。

您的意思是“list”而不是“array”,数组在Python中是不同的。要将某个内容作为代码块,请选择代码,然后点击顶部的
{}
图标。您的意思是“list”在Python中,数组与“数组”不同。要使某个东西成为代码块,请选择代码,然后点击
{}
顶部的图标。啊,是的,这解决了我的问题。谢谢!我仍然存在无法将打印行添加到我的值错误啊,是的,这解决了我的问题。谢谢!我仍然存在无法将打印行添加到我的值错误的问题。按照这里的编写方式,它工作正常。或者您将制表符和空格混合,或者不是在您的原始源代码中正确排列。我在那里遇到了一个错误“缩进错误:意外缩进”我使用的都是制表符,它正好有一个制表符,就像上面的一行一样(记事本++甚至承认,通过给我带ValueError的关联行),您可以显示您得到的全部异常吗?插入符号(
^
)在异常中,您可以看到问题所在。^就在打印的p的正下方。正如我之前所说,这里有些东西混淆了。也许可以尝试打开?其中有些东西Python不喜欢。您也可以使用十六进制编辑器查看该行。看起来好像有一个NP++插件。那可能是illuminating。按照这里的编写方式,它工作得很好。要么您混合了制表符和空格,要么在原始源代码中没有正确排列。我在那里遇到了一个错误“IndentationError:unexpected indent”我使用的都是制表符,它正好有一个制表符,就像上面的一行一样(记事本++甚至承认,通过给我带ValueError的关联行,您可以显示您得到的完整异常吗?插入符号(
^
)在异常中,您可以看到问题所在。^就在打印的p的正下方。正如我之前所说,这里有些东西混淆了。也许可以尝试打开?其中有些东西Python不喜欢。您也可以使用十六进制编辑器查看该行。看起来好像有一个NP++插件。那可能是illumi纳丁。