我不知道这是否可行(python新手),但是我想使用已定义变量的列表,当我在shell或cmd中运行以接受输入时,则显示已翻译的文本。
举个例子:
a = "00";
aa = " 0000";
b = "11";
bb =" 1111";
zz =" ";
然后,如果客户输入:a,b,bb,aa,zz,a,b
我希望它显示:0011 1111 0000 0011 (就像那样)
如果有其他方法,我想坚持当前的分配变量的方式。
答案 0 :(得分:0)
我建议使用字典,如下:
translations = {
'a' : '00',
'aa' : '0000',
'b' : '11',
'bb' :'1111',
'zz' : ''
}
# python3
userInput = input()
print(' '.join(translations[key.strip()] for key in userInput.split(',')))
# python2
userInput = raw_input()
print ' '.join(translations[key.strip()] for key in userInput.split(','))
请注意,如果用户输入了未定义的密钥,则会引发KeyError。您可以将dict查找包装在try-except块中,并捕获KeyError来处理此问题。
答案 1 :(得分:0)
最好用自己定义的字典来实现这一目标。但如果如你所说,你不想改变你使用这些变量的方式, 也可以使用locals()
,这使你可以访问定义的本地字典变量。为了给你一个完全成熟的例子:
a = "00"
aa = " 0000"
b = "11"
bb =" 1111"
zz =" "
variables = input("Variable string? ")
# Process the input into variable names
variables = [variable_.strip() for variable_ in variables.split(",")]
# Find values assigned to each variable
text = []
for variable_ in variables:
try:
text.append(str(locals()[variable_]))
except KeyError:
print("Variable {} not found".format(variable_))
print("".join(text))