Jon*_*ove 0 python function probability
为什么我得到一个语义错误,当我通过功能rollDie()上checkPascal(numTrials, roll),但是当我通过它的名字,然后把括号变量后,它的工作原理是故意的吗?(请看一下代码).我试过玩它也看,但我似乎无法正确地说出来找到答案.
这将是非常感激,因为我似乎无法弄明白.这不是一个大问题,这个问题甚至不是课堂作业的一部分.我们正在OpenCourseWare MITx课程中学习蒙特卡罗方法,我随机地想到了这一点.我不知道为什么那些parens就在那里.我以为他们应该在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)
Run Code Online (Sandbox Code Playgroud)
据我了解,'roll'只是一个变量,变量不能有参数,至少我认为.这似乎是直觉上的错误.这是因为它是一种弱类型的语言吗?我很好奇.谢谢.
只传递名称rollDie传递函数 rollDie.这就是为什么在roll进一步向下工作之后放入parens ,你调用变量引用的函数roll.
传递rollDie()计算该函数,并返回random.choice([1,2,3,4,5,6])(在这种情况下roll是一个整数)
尝试:
print rollDie
print rollDie()
Run Code Online (Sandbox Code Playgroud)
看到差异.