我创建了一个简单的仲裁函数,它根据随机无序列表中的第一个元素打印出一个值(1)。你知道吗
看下面的代码:我创建一个变量并将其设置为1,然后创建一个小列表(1,2,3),然后洗牌列表。其思想是,如果该列表的第一个元素(洗牌后)是1或2,则打印“correct”的值,但如果列表的第一个元素恰好是3,则将“correct”设置为0,然后再次运行该函数。从if语句中可以看出,当'value'设置为0时,我根本不希望打印它,因为在任何打印发生之前,函数正在再次运行(chair())。你知道吗
运行这个之后,我希望找到一个打印出来的5个值为1。问题是,我也看到0个值被打印出来。这似乎是一个非常简单的函数,我觉得有点愚蠢,因为我不明白为什么会这样。有什么想法吗?你知道吗
def chair():
correct = 1
a = [1,2,3]
random.shuffle(a)
if a[0] == 3:
correct = 0
chair() #run function again without printing
print correct
for i in range(5):
chair()
您的函数是递归的,因此当您再次调用该函数以避免打印时,该函数仍将完成。如果您添加else语句,您将看到这些零消失。例如:
编辑:语法 编辑:示例
仅仅调用
chair()
不会修改correct
。你需要做correct = chair()
。问题是chair()
不返回任何内容;它打印它。您应该将打印移到函数外部,然后返回:相关问题 更多 >
编程相关推荐