我想在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,但我收到了上述错误。任何帮助将不胜感激。
答案 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行并将被执行。实际上,执行报表很危险,可能是许多错误和漏洞的来源。我不建议你经常使用它。