Python:意外的打印值来自一个简单的函数
问题描述:
我创建了一个简单的arbritrary函数,根据随机洗牌列表中的第一个元素打印出一个值(1)。看看下面的代码:我创建一个变量并将其设置为1,然后我创建一个小列表(1,2,3),然后洗牌列表。这个想法是,如果该列表的第一个元素(在shuffle之后)是1或2,则打印'correct'的值,但是如果列表的第一个元素碰巧是3,则将'correct'设置为0,并且然后再次运行该功能。正如你可以从if语句中看到的那样,当'value'设置为0时,我不认为这会被打印出来,因为在打印发生之前函数正在再次运行(chair())。Python:意外的打印值来自一个简单的函数
运行此操作后,我希望找到打印出的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语句,你会看到这些零消失。例如:
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()
编辑:语法 编辑:例如
答
只要拨打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()
完美。这一小小的变化正是我所需要的。谢谢。 – Steve