You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3:无需修改原脚本,如何循环自动传递输入值?

解决无法修改原脚本时循环自动传递input输入的问题

因为无法修改Original_Script,我们可以通过**猴子补丁(Monkey Patching)**替换该模块内的input函数,让它自动返回预设的输入值,而非等待手动输入。

具体实现步骤

  1. 准备一个生成器/迭代器,按原脚本中input()的调用顺序,依次提供每轮循环需要的输入值。
  2. 替换Original_Script模块的input函数,使其每次调用都从迭代器中取出下一个预设值。
  3. 正常循环调用main函数即可,无需手动输入。

代码示例

import Original_Script

# 生成器:按原脚本input的调用顺序,返回所有需要的输入值
def auto_input_generator():
    for i in range(9):
        # 假设原脚本中先调用input获取input1,再调用input获取input2
        yield str(i)  # input默认返回字符串,注意类型匹配
        yield "22"

# 转换为迭代器
input_supplier = auto_input_generator()

# 替换Original_Script的input函数
Original_Script.input = lambda: next(input_supplier)

# 循环调用main,自动传入预设输入
for _ in range(9):
    Original_Script.main(arg1, arg2, arg3)

关键说明

  • 必须保证生成器中yield的顺序、数量,和原脚本里input()的调用顺序、次数完全一致,否则会出现取值异常。
  • 如果原脚本中需要将输入转为整数/浮点数,只需确保yield的值可以被正确转换即可(比如直接yield数字或对应格式的字符串)。
  • 你之前尝试直接赋值Original_Script.input1无效,大概率是因为原脚本的main函数每次执行时都会重新调用input()覆盖全局变量,而猴子补丁是从根源拦截输入请求,避免了这个问题。

内容的提问来源于stack exchange,提问作者FindAnalysy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:25:42