Python如何捕获print()输出并将每次内容分别存入不同变量?
实现方案
不推荐动态生成独立变量,Python中用列表/字典存储批量同类型数据是更规范、易维护的方案,以下是具体实现:
方案1:用列表存储所有结果(推荐)
每次匹配到的结果会按顺序存入列表,第1次运行的结果存在下标0的位置,第2次存在下标1,以此类推,取用非常方便。
# 初始化空列表存储所有输出结果 output_results = [] while True: CodeWord = str(input("Code-word: ")) Stop = ["Stop", "Exit", "End", "Terminate"] if CodeWord in Stop: exit("User Terminate") # 每次匹配前重置CodeNum,修复原代码后续无法匹配前序编码的问题 CodeNum = 0 while CodeNum < 55: if CodeWord == CodeWordsUpC[CodeNum]: current_val = LettersUpC[CodeNum] print(current_val) # 将当前结果追加到列表 output_results.append(current_val) break else: CodeNum = CodeNum + 1
需要取用时直接按索引取值即可,例如取第3次的结果用output_results[2]。
方案2:用字典存储带自定义命名的结果(需要独立标识时可选)
如果一定要给每个结果加独立的名称标识,可以用字典存储:
output_dict = {} count = 1 while True: CodeWord = str(input("Code-word: ")) Stop = ["Stop", "Exit", "End", "Terminate"] if CodeWord in Stop: exit("User Terminate") CodeNum = 0 while CodeNum < 55: if CodeWord == CodeWordsUpC[CodeNum]: current_val = LettersUpC[CodeNum] print(current_val) # 自定义键名,比如result_1、result_2以此类推 output_dict[f"result_{count}"] = current_val count += 1 break else: CodeNum = CodeNum + 1
需要取用时直接按键取值即可,例如取第1次的结果用output_dict["result_1"]。
注:不推荐直接在全局动态创建独立变量,这种写法会导致代码难以调试,变量作用域不好控制,也不符合Python编码规范,日常使用列表/字典完全可以覆盖需求。
内容的提问来源于stack exchange,提问作者Samuel Sargent
相关产品推荐
相关产品推荐

