如何用变量的值作为另一个变量名来存储输入信息?
解决方案
推荐方法:用字典存储(安全且易维护)
这是Python处理动态命名存储的最佳实践,避免直接操作命名空间带来的风险。
修改后的代码:
a = "" # 初始值设为空字符串,原代码a=0会导致循环无法终止 b = 0 c = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'] # 创建字典映射变量名与输入值 input_storage = {} while a != '': b += 1 # 防止索引越界 if b >= len(c): print("可用变量名已耗尽") break d = c[b] input_val = input('Enter row: ') # 将输入值存入字典,键为d对应的字符串(即目标变量名) input_storage[d] = input_val # 提供循环终止入口 a = input("输入空字符串结束循环:") # 示例:获取'f'对应的输入值 print(input_storage.get('f', '未输入'))
不推荐方法:动态创建变量
如果一定要直接生成以d值为名称的变量,可通过globals()或locals()操作命名空间,但这种方式易引发命名冲突、增加调试难度,不建议用于实际项目。
示例代码:
a = "" b = 0 c = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'] while a != '': b += 1 if b >= len(c): print("可用变量名已耗尽") break d = c[b] input_val = input('Enter row: ') # 动态创建全局变量 globals()[d] = input_val a = input("输入空字符串结束循环:") # 此时可直接使用变量f print(f)
原代码注意点:
- 初始
a=0会导致while a is not ''永远为真(0和空字符串不是同一对象),循环无限执行,需改为a != ''并将a初始化为空字符串。 - 未处理b超出列表c长度的情况,需添加索引越界判断避免报错。
内容的提问来源于stack exchange,提问作者C0D3R M4DN3SS
相关产品推荐
相关产品推荐

