a ='b'使得字符串'a'可以更改为变量a等于字符串'b'

时间:2015-02-14 05:19:55

标签: python python-3.x

所以在python中我想将字符串更改为文字:

a = 'b'
b = 'c'
c = 'd'

encoded = input('Type encoded text and enter for decoded text: ')
decoded_list = MAKE_LITERAL_AND_SHOW_VALUES(list(encoded))
    ##Example: ['a','b','c'] becomes [a, b, c] so becomes ['b','c','d']
decoded = CONCATENATE(decoded_list)
    ##Example: ['b','c','a'] becomes 'bcd'
print(decoded)

是否有任何功能可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用字典吗?我的意思是,直接问题的答案是使用像globals()这样的东西......(但我不推荐)

a = 'b'
b = 'c'
c = 'd'

def MAKE_LITERAL_AND_SHOW_VALUE(encoded):
    return [globals()[i] for i in encoded]

print MAKE_LITERAL_AND_SHOW_VALUE(encoded)

替代方案是:

letterDict = {'a':'b', 'b':'c', 'c':'d'}

然后,如果你想使用它:

def MAKE_LITERAL_AND_SHOW_VALUE(encoded):
    letterDict = {'a':'b', 'b':'c', 'c':'d'}
    return [letterDict[i] for i in encoded]

声明:

(关于MattDMo的建议)

使用globals()是一个坏主意 99.9%当时。这显然是我编造的一个数字,但重点是它几乎总是不必要的。出于大多数初学者的原因,我会冒昧地猜测你喜欢这种方法;它看起来很直观,你可以在某些情况下编写更少的代码,等等。

问题是你可能会养成一个坏习惯。依靠模块的全局字典不是一个好的设计选择。这增加了耦合,减少了封装,并且使代码一般很难调试。与函数内的global传递变量不同。随着程序复杂性的增加,不要指望别人或你自己(将来)对阅读你编写的代码感到满意。