如何在Python中模拟一系列用户输入

如何在Python中模拟一系列用户输入,python,io,Python,Io,假设我们有这样一个函数 def function(): while True: user_input = input("enter a number: ") if user_input == "0": print("finish") break print("the number is " + user_input) 在main()中,我们调用函数 function() 然后它将请求用户

假设我们有这样一个函数

def function():
    while True:
        user_input = input("enter a number: ")
        if user_input == "0":
            print("finish")
            break
        print("the number is " + user_input)

在main()中,我们调用函数

function()
然后它将请求用户输入,直到得到一个“0”。 我想做的是让某个东西能够存储所有输入,并自动将其提供给控制台。因此,我不需要在控制台中手动键入它们

请注意,我希望函数不接受参数,使用
something\u作为输入
,而不将其作为参数传递

something_taken_as_input = ["1","2","3","0"]
function()
# enter a number: 1
# enter a number: 2
# enter a number: 3
# enter a number: 0
# finish
# all done by the program, no manually typing!

一个有趣的方法是将输入方法传递给函数

这样,您可以执行以下操作:

def function(inp_method):
while True:
    user_input = inp_method("enter a number: ")
    if user_input == "0":
        print("finish")
        break
    print("the number is " + user_input)
如果要从用户处获取输入, 可以这样称呼:

function(input)
否则,请使用要输入的数据定义一个类:

    class input_data:
        def __init__(data):
            self.data = data
            self.count = 0

        def get(self, str = ""):
            if(self.count == len(self.data)):
            return 0
        else:
            count+=1
            x = self.data[count-1]
并使用以下命令调用函数:

d = input_data(["1", "2", "3", "0"])
function(d.get)

基本上,您只是通过函数的参数传递方法。

一个有趣的方法是将输入方法传递给函数

这样,您可以执行以下操作:

def function(inp_method):
while True:
    user_input = inp_method("enter a number: ")
    if user_input == "0":
        print("finish")
        break
    print("the number is " + user_input)
如果要从用户处获取输入, 可以这样称呼:

function(input)
否则,请使用要输入的数据定义一个类:

    class input_data:
        def __init__(data):
            self.data = data
            self.count = 0

        def get(self, str = ""):
            if(self.count == len(self.data)):
            return 0
        else:
            count+=1
            x = self.data[count-1]
并使用以下命令调用函数:

d = input_data(["1", "2", "3", "0"])
function(d.get)

基本上,您只是通过函数的参数传递方法。

从文件
python script.py
获取输入。您甚至可以将结果保存在文件
python script.pyresult.text
中,这样您就可以将此文件与具有预期结果的文件进行比较。当函数get value作为参数,而其他函数仅从用户处获取值并使用此值运行第一个函数时,这是很好的。通过这种方式,您可以使用列表、文件、sys.args或数据库中的数据测试第一个函数,而无需手动执行。从文件
python script.py
获取输入。您甚至可以将结果保存在文件
python script.pyresult.text
中,这样您就可以将此文件与具有预期结果的文件进行比较。当函数get value作为参数,而其他函数仅从用户处获取值并使用此值运行第一个函数时,这是很好的。通过这种方式,您可以使用列表、文件、sys.args或数据库中的数据测试第一个函数,而无需手动执行。