我在哪里可以调用我的函数以便测试它?

Where can I call my function so I can test it?

我目前正在处理这段代码,我知道我必须调用该函数来测试它,但我不确定我在哪一行调用该函数。我想为我的第一个测试调用 sim_yahtzee(1,5),我怎么知道在所有这些代码行中在哪里调用它?谢谢

def sim_yahtzee(nrolls,n,sides=6):
    first_roll = []
    for i in range (n):
        rn = random.randint(1,6)
        first_roll.append(rn)
    number_one = first_roll.count(1)
    number_two = first_roll.count(2)
    number_three = first_roll.count(3)
    number_four = first_roll.count(4)
    number_five = first_roll.count(5)
    number_six = first_roll.count(6)
    for i in range (nrolls):
        if number_one > number_two and number_three and number_four and number_five and number_six:
            keep = [1] * number_one
        elif number_two > number_one and number_three and number_four and number_five and number_six:
            keep = [2] * number_two
        elif number_three > number_one and number_two and number_four and number_five and number_six:
            keep = [3] * number_three
        elif number_four > number_one and number_two and number_three and number_five and number_six:
            keep = [4] * number_four
        elif number_five > number_one and number_two and number_three and number_four and number_six:
            keep = [5] * number_five
        elif number_six >= number_one and number_two and number_three and number_four and number_five:
            keep = [6] * number_six
        elif number_five == number_four or number_three or number_two or number_one:
            keep = [5] * number_five
        elif number_four == number_three or number_two or number_one:
            keep = [4] * number_four
        elif number_three == number_two or number_one:
            keep = [3] * number_three
        elif number_two == number_one:
            keep = [2] * number_two
        reroll = []
        for i in range (len(first_roll)-len(keep)):
            rn = random.randint(1,6)
            reroll.append(rn)
        first_roll = (keep + reroll)
print (first_roll)

在 python 脚本中定义函数后,您总是需要调用它。在你的例子中,你可以用

来调用它
def sim_yahtzee(nrolls,n,sides=6):
    first_roll = []
    for i in range (n):
        rn = random.randint(1,6)
        first_roll.append(rn)
        number_one = first_roll.count(1)
        number_two = first_roll.count(2)
        number_three = first_roll.count(3)
        number_four = first_roll.count(4)
        number_five = first_roll.count(5)
        number_six = first_roll.count(6)
        for i in range (nrolls):
            if number_one > number_two and number_three and number_four and number_five and number_six:
                keep = [1] * number_one
            elif number_two > number_one and number_three and number_four and number_five and number_six:
                keep = [2] * number_two
            elif number_three > number_one and number_two and number_four and number_five and number_six:
                keep = [3] * number_three
            elif number_four > number_one and number_two and number_three and number_five and number_six:
                keep = [4] * number_four
            elif number_five > number_one and number_two and number_three and number_four and number_six:
                keep = [5] * number_five
            elif number_six >= number_one and number_two and number_three and number_four and number_five:
                keep = [6] * number_six
            elif number_five == number_four or number_three or number_two or number_one:
                keep = [5] * number_five
            elif number_four == number_three or number_two or number_one:
                keep = [4] * number_four
            elif number_three == number_two or number_one:
                keep = [3] * number_three
            elif number_two == number_one:
                keep = [2] * number_two
            reroll = []
            for i in range (len(first_roll)-len(keep)):
                rn = random.randint(1,6)
                reroll.append(rn)
            first_roll = (keep + reroll)
    print (first_roll)

sim_yahtzee(1,5) 

此外,我更改了缩进,我假设循环应该在函数内部。缩进级别替换了 python.

中的结束语句

确保您的 "for" 循环缩进正确!

您可以在定义函数后在任何地方调用函数,方法是键入函数名称及其参数作为单独的一行。为了接收函数的输出,您需要使用 "return" 语句来 return 变量,因为您在函数中初始化的任何变量都将在函数完成后消失。

考虑放置:

return first_roll

作为函数的最后一行,并使用

调用函数
print(sim_yahtzee(6,6,sides=6))

函数之外的第一个未缩进的行。这将打印 returned 变量,first_roll。