我创建了一个简单的arbritrary函数,它根据随机洗牌列表中的第一个元素打印出一个值(1)。
查看下面的代码:我正在创建一个变量并将其设置为1,然后我创建一个小列表(1,2,3),然后对列表进行混洗。这个想法是,如果该列表的第一个元素(在shuffle之后)是1或2,则打印'正确'的值,但是如果列表的第一个元素恰好是3,则设置&# 39,正确'为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()
答案 0 :(得分:1)
只需致电chair()
即可修改correct
。你需要做correct = chair()
。问题是chair()
没有返回任何东西;它打印出来。您应该将打印移动到函数外部并返回:
def chair():
correct = 1
a = [1,2,3]
random.shuffle(a)
if a[0] == 3:
correct = chair()
return correct
for i in range(5):
print chair()
答案 1 :(得分:0)
您的功能是递归的,因此当您再次调用该功能以避免打印时,该功能仍将完成。如果添加了else语句,则会看到这些零消失。例如:
def chair():
correct = 1
a = [1,2,3]
random.shuffle(a)
if a[0] == 3:
correct = 0
chair() #run function again without printing
else:
print correct
for i in range(5):
chair()
编辑:语法 编辑:示例