将sys和argv用于命令lin时出现问题

2024-09-30 20:37:35 发布

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

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会是第1个论点的条件,还有一个“acehorrst”,它有9个字母长,不起作用,我对所有的单词都有相同的问题,不管我放了什么数字


Tags: frompyimport终端lenifvaluedef
2条回答

你忘了把argv转换成整数。线路应为:

if 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()

相关问题 更多 >