在Python中更改变量名称

时间:2014-12-27 07:43:33

标签: python

我想在Python中执行以下操作:

for i in range (1,2):
    string = 2
    string="string"+str(i)   
print string1
print string2

我期待输出string1 = 2和string2 = 2但是得到以下错误。

NameError: name 'string1' is not defined.

我想将string的值存储在新变量中,如上面定义的string1和string2,但我收到了上述错误。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这里存在逻辑错误。首先,不要使用动态名称作为变量,它们由Python保留。(例如,字符串,打印)

此外,您尝试打印string1和string2,没有像他们一样的变量调用。您在 for 循环中有一个变量,名为 string ,等于 2 。之后重新定义它等于 string + str(i)就是这样。您可以打印字符串变量。因为这里没有更多变量。

string=2
string=string+"1"

这并不意味着 string1 这意味着有一个名为 string 的变量,它等于 string +“1”

  

同样 for i in range(1,2)只会 1 。 2不包括在内。如果你想要 2 ,你应该写它(1,3)。

答案 1 :(得分:0)

首先。当你print string1时,python会尝试查找变量string1,但之前你没有定义过这个变量。要在Python中定义变量,您需要编写如下内容:

string1 = <some value or expression>

还有另一种定义变量的方法,但它们不在我们的问题中。

其次。当您在循环内部定义变量时,该变量仅在此循环内部可用(局部变量),并且在循环执行后将被销毁。因此,如果在for循环中创建变量,则无法在循环外调用变量。

尽管如此。为了使您的想法有效,您可以使用exec-statement:

i = 1
exec "string" + str(i) + " = " + str(i)

i = 2
exec "string" + str(i) + " = " + str(i)

print string1
print string2

exec语句的结果将被Python解释器理解为典型的python行并将被执行。实际上,执行报表很危险,可能是许多错误和漏洞的来源。我不建议你经常使用它。

相关问题