Python中如何通过输入打印对应数组(无需逐个判断)
解决输入数组名打印对应数组的问题(无需大量if语句)
这问题我之前写小工具的时候也碰到过,直接print输入的字符串肯定不行——因为input()返回的是字符串类型,不是变量本身。不用写一堆if x == 'b'这种重复代码,有两种实用思路:
方法1:用字典做映射(推荐,安全可控)
最稳妥的方式是手动创建一个字典,把允许用户访问的数组名称(字符串)和对应的数组做绑定,既能精准控制可访问的数组,又避免了安全风险。
示例代码:
# 定义你的数组 b = [1, 2, 3, 4, 5] c = [2, 3, 4] d = [1, 2, 3] # 创建名称到数组的映射字典 array_map = { 'b': b, 'c': c, 'd': d } # 获取用户输入 input_name = input("请输入要打印的数组名称:") # 从字典中取出对应数组并打印,同时处理输入错误的情况 print(array_map.get(input_name, f"不存在名为 {input_name} 的数组"))
用户输入b时,就会从字典里拿到数组[1,2,3,4,5]并打印出来,完美解决你的问题。
方法2:利用全局/局部变量字典(不推荐,有安全风险)
如果你不想手动维护字典,可以用Python内置的globals()或locals()函数获取当前的变量字典,直接通过输入的字符串查找对应的变量。
示例代码:
# 定义你的数组 b = [1, 2, 3, 4, 5] c = [2, 3, 4] d = [1, 2, 3] input_name = input() # 通过globals()获取全局变量,找到对应的数组 target_array = globals().get(input_name) if target_array is not None: print(target_array) else: print(f"没有找到名为 {input_name} 的数组")
不过要注意:这种方法会暴露所有全局变量,比如用户输入__builtins__或其他敏感变量名,可能会访问到你不想暴露的内容,所以只适合自己测试、无外部用户输入的场景,生产环境绝对不推荐。
总结一下,优先用字典映射的方法,安全又灵活,还能清晰管理可访问的数组~
内容的提问来源于stack exchange,提问作者DarthGir
相关产品推荐
相关产品推荐

