Python动态字符串表示参数[i]

2024-10-02 02:44:05 发布

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

我对Python有一个问题,我试着在这里寻找答案,但我似乎无法解释到目前为止提供的任何解决方案。我为python程序提供命令行参数(系统argv)这些参数的数量可能会随着运行的不同而变化,所以我决定最好创建一个for循环,为每个参数创建一个新变量。第一个参数是我们都知道的脚本名,我不想包括这个,第二个参数是密码字符串,我也不想要这个,所以它从第三个参数开始。最后的印刷品只是看它是否有效。你知道吗

TempPersonNr = len(sys.argv)
TempPersonNr -= 2
VarPersonNr = ""

i = 1
for TempPersonNr in sys.argv[2:]:
  VarPersonNr[i] = sys.argv[i]
  print (VarPersonNr[i])
  i += 1

错误:

Traceback (most recent call last):
  File "HIDDEN", line 31, in <module>
    VarPersonNr[i] = sys.argv[i]
TypeError: 'str' object does not support item assignment

我希望输出是这样的。你知道吗

Argument 1 = A
Argument 2 = B
Argument 3 = C

如果我向程序提供以下命令行参数,我希望它创建3个变量,并以值作为参数。例如。你知道吗

VarPersonNr1  (with the value of argument 1) 
VarPersonNr2  (with the value of argument 2) 
VarPersonNr3  (with the value of argument 3) 

Tags: ofthe命令行in程序for参数value
2条回答

试试这个,这样你就有了一个列表(你可以用你描述的方式命名新的变量)。 而且我觉得你还不太了解for循环的工作原理。。。你知道吗

TempPersonNr = len(sys.argv) - 2
VarPersonNr = []

for TempPerson in sys.argv[2:]:
    VarPersonNr.append(TempPerson)
    print (TempPerson)

字符串对象是不可变的,您不能更改它。 因此,当您试图将字符串的第i个变量赋值给系统argv[i] 它给出了一个错误。你知道吗

编辑: 根据您的输入和输出,您可以直接分配的第三个值系统argv你的变量。 varPersonNr3型=系统argv[我]

如果要将其余参数添加到该变量,请使用: VarPersonNr3.append文件(系统argv[i] ()

编辑: 有两种选择: 1) 可以使用字典将变量名存储为键和系统argv值作为值:

d={}
TempPersonNr = len(sys.argv)
TempPersonNr -= 2
VarPersonNr = ""

i = 1
for TempPersonNr in sys.argv[2:]:
  key="VarPersonNr"+str(i)
  d[key]=sys.argv[i]
  i += 1

这将为您提供一个字典{“VarPersonNr3”:'C'、“VarPersonNr4”:'D'}等等 2) 您可以将所有值添加到一个列表中,然后从那里获取它。 3) 这是一个非常糟糕的选择,不应该使用。。但仍然:

import sys
this = sys.modules[__name__]
i=1
for TempPersonNr in sys.argv[2:]:
   setattr(this, 'VarPersonNr%s' % i, sys.argv[i])
   i+=1
print(VarPersonNr3)
#this will give you the third value

试着用一个dict或者一个列表来描述这个。你知道吗

相关问题 更多 >

    热门问题