2024-04-26 20:20:52 发布
网友
我对python和编程都很陌生,一直在尝试如何做到这一点。
以下是我需要的帮助:
y=0 x=2 p01='hello' p02='bye' print('p'+(str(y)+str(x)))
输出当然是'p02',但是我怎样才能使输出代替p02的值('bye')
希望这有意义,我期待任何答案。
eval()
它对存储在字符串中的表达式求值,就像它是Python代码一样。
在你的例子中,'p'+(str(y)+str(x))变成了'p01',所以它得到了表达式p01的结果,这当然是'bye'。
'p'+(str(y)+str(x))
'p01'
p01
'bye'
print(eval('p'+(str(y)+str(x))))
但是请注意,你不应该这样做-几乎总是有更好的方法。请阅读Why is using 'eval' a bad practice?
globals()为我们提供了一个Python程序中所有全局变量的字典,它们的名称是字符串索引,值是字典值。因此,我们可以简单地:
globals()
globals()['p'+(str(y)+str(x))]
计算结果为globals()['p01'],得到全局p01的值,即bye。
globals()['p01']
bye
重新构造代码。把它们做成一个数组或字典,并得到它的索引。仔细考虑一下为什么要这么做,并更改代码,这样就不必这么做了。在eval看起来是最佳选择的情况下,这是很糟糕的。
你可以用
eval()
它对存储在字符串中的表达式求值,就像它是Python代码一样。
在你的例子中,
'p'+(str(y)+str(x))
变成了'p01'
,所以它得到了表达式p01
的结果,这当然是'bye'
。但是请注意,你不应该这样做-几乎总是有更好的方法。请阅读Why is using 'eval' a bad practice?
那么,我们能做什么呢?
globals()
为我们提供了一个Python程序中所有全局变量的字典,它们的名称是字符串索引,值是字典值。因此,我们可以简单地:计算结果为
globals()['p01']
,得到全局p01
的值,即bye
。再说一遍,这是解决更大问题的办法
重新构造代码。把它们做成一个数组或字典,并得到它的索引。仔细考虑一下为什么要这么做,并更改代码,这样就不必这么做了。在eval看起来是最佳选择的情况下,这是很糟糕的。
相关问题 更多 >
编程相关推荐