Python 使用来自用户的多个原始输入测试函数

Python 使用来自用户的多个原始输入测试函数,python,user-input,Python,User Input,我需要测试一个函数,如下所示,以检查该函数的提示和输出。正如你所看到的,有一些分支。我的理想目标是能够指定我想要在函数中尝试的值,同时也能够捕获整个过程中的所有输出文本 def prompt(): guess = input("guess a letter: ") return(guess) def testme(): i = 1 vocab = ['a', 'b', 'c','d', 'e', 'f'] import random

我需要测试一个函数,如下所示,以检查该函数的提示和输出。正如你所看到的,有一些分支。我的理想目标是能够指定我想要在函数中尝试的值,同时也能够捕获整个过程中的所有输出文本

def prompt():
  guess = input("guess a letter: ")
  return(guess)


def testme():
    i = 1
    vocab = ['a', 'b', 'c','d', 'e', 'f']
    import random
    correct = random.choice(vocab)
    while i < 4:
        i = i + 1 
        guess = prompt()
        if correct == guess:
            print("Well done!")
            i = 100
        else:
          print("Wrong!\n")

testme()
def提示符():
猜=输入(“猜一个字母:”)
返回(猜测)
def testme():
i=1
vocab=['a','b','c','d','e','f']
随机输入
正确=随机选择(vocab)
而我<4:
i=i+1
猜测=提示()
如果正确==猜测:
打印(“做得好!”)
i=100
其他:
打印(“错误!\n”)
testme()
我的需要:

值得注意的是,您可以看到我的函数
test
故意不接受任何参数,而是一个用户必须与提示交互的函数。我需要自动化这一部分,并捕获函数如何反应(发送到控制台的消息),直到函数结束


考虑到用户可以提供多个输入,我试图避免手动运行此函数,以查看函数的行为是否符合我的预期。

您只需获取一个参数并将列表传递给它即可:

def testme(vocab):
    i = 1
    import random
    correct = random.choice(vocab)
    while i < 4:
        i = i + 1 
        guess = prompt()
        if correct == guess:
            print("Well done!")
            i = 100
        else:
          print("Wrong!\n")

您还可以从用户处获取逗号分隔的值,将它们拆分并转换为列表并传递给函数。

捕获输出是什么意思?是否要保存用户键入的内容?你想知道这需要多少猜测吗? 我想您可以看看for循环和break语句:)它们将使您的工作更轻松

def prompt():
  guess = input("guess a letter: ")
  return(guess)


def testme(vocab):
    import random
    correct = random.choice(vocab)
    for i in range(4):
        guess = prompt()
        if correct == guess:
            print("Well done!")
            break
        else:
          print("Wrong!\n")
    return my_list_of_outputs

testme(['a','b','c','d','e','f'])

你可以暂时注释掉
guess=input(“猜一个字母”)
并使用
alphabets=['a'、'b'、'c'、'd'、'e']
guess=random.choice(alphabets)
我更新了上面的问题,希望能清楚地表达我的需求。如果你浏览了这段代码,你会发现有反馈,再猜一次,你是正确的,循环停止,等等。我需要自动测试函数的结果。感谢你的评论,我在上面更新了,以澄清我的函数故意不接受输入。我不需要在函数运行时使用命令行,而是需要自动输入并捕获/保存函数对用户的响应。此函数没有输入,需要用户在命令行上与其交互。我不想手工测试这个函数,而是自动化输入并捕获函数响应,直到它结束。真正的自动化测试。我有100名学生,我试图用手来避免这种情况。
def prompt():
  guess = input("guess a letter: ")
  return(guess)


def testme(vocab):
    import random
    correct = random.choice(vocab)
    for i in range(4):
        guess = prompt()
        if correct == guess:
            print("Well done!")
            break
        else:
          print("Wrong!\n")
    return my_list_of_outputs

testme(['a','b','c','d','e','f'])