我对Python和编程一窍不通,想一直学习如何实现这个功能。
以下是需要帮助的方面:
y=0
x=2
p01='hello'
p02='bye'
print('p'+(str(y)+str(x)))
当然,输出结果是'p02',但我怎么才能让输出结果变成p02的值('bye')呢?
希望这样说得清楚,期待您的回答。
我对Python和编程一窍不通,想一直学习如何实现这个功能。
以下是需要帮助的方面:
y=0
x=2
p01='hello'
p02='bye'
print('p'+(str(y)+str(x)))
eval()
...它会像执行Python代码一样,对存储在字符串中的表达式进行求值。
在您的情况下,'p'+(str(y)+str(x))
变成了 'p01'
,然后得到表达式 p01
的结果,当然是 'bye'
。
print(eval('p'+(str(y)+str(x))))
globals()
给出了一个字典,其中包含 Python 程序中所有全局变量的名称及其相应的值。因此,我们可以简单地执行以下操作:globals()['p'+(str(y)+str(x))]
这将评估为globals()['p01']
,获取全局p01
的值 - 这是bye
。
重新构建您的代码。 将它们制成数组或字典并获取其索引。 仔细考虑为什么要这样做,并更改代码以避免此类情况。 eval看起来是最佳选择是不好的。
eval
是邪恶的”,如果这就是你点踩的原因,你应该解释一下为什么。 - SethMMortonglobals()['p'+(str(y)+str(x))]
(或者在函数内部执行 locals()['p'+(str(y)+str(x))]
)。这将消除对 eval
的使用。 - SethMMorton'p{}{}'.format(y, x)
。 - SethMMortonglobals()
。 - Toastrackenigmadict
。 - SethMMorton
d = {'p01': 'hello','p02': 'bye'}; print(d['p'+(str(y)+str(x))])
。 - SethMMorton