Python中如何将输入的变量名转换为对应变量值输出
Python输入字符串匹配已定义变量输出对应值的实现方法
核心原因:input() 读取到的所有内容默认都是字符串格式,不会自动关联代码中定义的同名变量,需要手动做变量名到值的匹配逻辑。
推荐实现(无安全风险)
用字典提前维护变量名和对应值的映射关系,逻辑完全可控,不会有恶意代码执行风险,生产环境也可使用:
# 定义变量名和值的对应关系 var_dict = { "a": 1, "b": 2, "c": 3 } name = input('Encode ') # 拆分输入的内容,逐个从映射里取对应的值 output_list = [] for item in name.split(','): # 自动过滤输入内容里不小心带的前后空格 key = item.strip() output_list.append(str(var_dict[key])) # 输出1,2,3格式 print(','.join(output_list)) # 如果要输出1 2 3格式,替换成下面这句即可 # print(' '.join(output_list))
简化实现(仅适合本地测试用)
如果只是本地写临时测试脚本,可以直接用locals()获取当前作用域的变量表来取值,注意不要在对外暴露的程序里用这个方法,避免恶意输入带来风险:
a = 1 b = 2 c = 3 name = input('Encode ') output_list = [str(locals()[item.strip()]) for item in name.split(',')] print(','.join(output_list))
注意:不要图省事用eval()处理输入,一旦输入内容是可执行的恶意代码,会直接在你的设备上运行,存在极高安全风险。
内容的提问来源于stack exchange,提问作者TECHNICAL SAMI
相关产品推荐
相关产品推荐

