使用sys和argv进行命令行时问题


from sys import argv
def multii():
    if len(argv) < 2:
        pass
    else:
        for value in values:
            if len(value) == argv[1]:
                print(value)
values = ["acehorrst", "hellorye", "badbadg", "skrskr", "hahahah"]
multii()

我在终端中调用:" python3" filename.py" 9"

所以是:" python3 testargv.py 9"它在终端中无能为力

我以为9将是condier的参数1,并且有9个字母的" Acehorrst",它不起作用,无论我放了什么号码,我都有相同的问题。

您忘了将ARGV投放给整数。该行应该是:

如果len(value)== int(argv [1]):

我认为您要寻找的是将值的长度与参数的整数值进行比较,默认情况下,参数被视为字符串。因此,您执行python3 testargv.py 9将使argv看起来如下 ['testargv.py', '9']

在您的代码中,您将长度与字符串进行比较,将argv[1]转换为int(argv[1]),并且可以正常工作。

from sys import argv
def multii():
    if len(argv) < 2:
        pass
    else:
        for value in values:
            if len(value) == int(argv[1]):
                print(value)
values = ["acehorrst", "hellorye", "badbadg", "skrskr", "hahahah"]
multii()

最新更新