Python3.x以不同的格式输入

2024-10-02 18:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试创建一个py脚本调用另一个py脚本并向其中输入int时发现了一些问题。我解释得更好:

我的第一个剧本是简单脚本.py你知道吗

def addition ( a , b ) :
    c = a + b 
    return c
x = int ( input ( 'input a int' ) )
y = int ( input ( 'input a int' ) )
summ = addition ( x , y )

在我的第二个剧本里测试仪.py我想这样做:

call simpleScript.py ;
input 4 as x ;
input 8 as y ;
run simpleScript.py using those two input ;

还有更多的东西。问题是我真的找不到合适的输入。一旦我得到它,我就可以做剩下的一切了。你知道吗

提前谢谢。你知道吗


Tags: runpy脚本inputreturndefascall
1条回答
网友
1楼 · 发布于 2024-10-02 18:24:19

回答帮助操作,因为这和链接的副本之间有一点不同(尽管我仍然建议这是一个应该关闭的副本)。这里的输入是在模块作用域中运行的,因此在第一次加载时将执行。i、 当simpleScript.py第一次被import调用时,它将请求输入。你知道吗

为了在测试场景中做到这一点,我首先建议更改它,以便简单脚本.py提供可以运行的函数。这样,就可以使用与复制品相同的解决方案。你知道吗

但是对于这种simpleScript.py直接执行代码的特定情况,我们可以使用下面的测试脚本测试功能:

from unittest.mock import patch
from io import StringIO

@patch("sys.stdin", StringIO("1\n4"))
def test_simpleScript():
    import simpleScript

test_simpleScript()

其工作原理是模拟stdin(命令行输入)返回1,然后返回新行4。由于input如何与stdin一起工作,因此在第一次调用input时返回1,然后在下一次调用时返回4。你知道吗

当我们import调用simpleScript模块时,其中的所有代码都会被执行。由于上面的模拟补丁,在此期间对input的任何调用都将读取我们给出的数字。由于模块只在第一次加载时执行-如果您一个接一个地尝试多个测试,可能会出现问题。在这种情况下,请参阅此处了解如何强制模块重新加载:How do I unload (reload) a Python module?

相关问题 更多 >