Python中如何将input输入的字符串匹配为对应变量参与运算
解决方法
方案1:字典映射(最推荐)
通过手动构建允许被调用的变量和字符串的映射字典,完全可控无安全风险,同时方便做输入合法性校验。
示例代码:
a = 1 b = 2 c = 3 # 构建字符串和对应变量的映射关系 var_mapping = { "a": a, "b": b, "c": c } x = input("a/b/c") if x in var_mapping: solution = 7 * var_mapping[x] print(solution) else: print("非法输入,请输入a、b、c中的一个")
方案2:调用globals()方法(仅信任场景可用)
globals()是Python内置方法,会返回当前全局作用域下所有变量组成的字典,可直接用输入的字符串作为键获取对应变量值。
示例代码:
a = 1 b = 2 c = 3 x = input("a/b/c") if x in globals(): solution = 7 * globals()[x] print(solution) else: print("非法输入")
注意:该方法存在安全风险,若用户输入其他全局变量的名称,可直接访问到对应值,若代码中存在密码、密钥等敏感变量会发生泄露,不建议在面向非信任用户的场景中使用。
方案3:eval()执行字符串代码(极不推荐)
eval()可以直接执行字符串格式的Python代码,可实现需求,但安全风险极高:若用户输入恶意代码,会被直接执行,可能造成数据丢失、系统损坏等严重后果,仅做原理科普,禁止在正式场景使用。
示例代码:
a = 1 b = 2 c = 3 x = input("a/b/c") # 风险极高,不要使用 solution = 7 * eval(x) print(solution)
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

