为什么当我传递函数rollDie()
到checkPascal(numTrials, roll)
时会出现语义错误,但当我传递它的名称,然后将paren放在变量后面时,它会按预期工作?(请看一下代码)。我试过玩弄它,也试过寻找,但我似乎无法正确地用词来找到答案。你知道吗
这将是非常感谢,因为我似乎无法找出它。这不是一个大问题,这个问题甚至不是课堂作业的一部分。我们在我的开放课件MITx课上学习蒙特卡罗方法,我随机发现了这个。我不知道为什么帕伦一家在那里。我以为他们应该在def线上。我正在参加一个以前录制的免费在线课程,所以我没有老师可以告诉我。谢谢。你知道吗
import random
def rollDie():
"""returns a random int between 1 and 6"""
return random.choice([1,2,3,4,5,6])
def checkPascal(numTrials, roll):
yes = 0.0
for i in range(numTrials):
for j in range(24):
d1 = roll #correct line would be d1 = roll()
d2 = roll #d2 = roll()
if d1 == 6 and d2 == 6:
yes += 1
break
print 'Probability of losing =', 1.0 - yes/numTrials
checkPascal(10000, rollDie()) #incorrect code
#correct code would be checkPascal(10000, rollDie)
据我所知,“roll”只是一个变量,变量不能有参数,至少我是这么想的。直觉上似乎是错的。这是因为它是弱类型语言吗?我很好奇。谢谢。你知道吗
只传递名称
rollDie
传递函数rollDie
。这就是为什么把paren放在roll
后面更进一步的原因,您正在调用roll
变量引用的函数。你知道吗传递
rollDie()
计算该函数,并返回random.choice([1,2,3,4,5,6])
(在这种情况下,roll
是一个整数)尝试:
看区别。你知道吗
相关问题 更多 >
编程相关推荐