我是新来的函数,我想弄清楚如何从一个函数获取一个值到另一个函数。这里的布局:我定义一个函数来拉随机数,并把它们放入词典:在其他函数中调用函数
import random
def OneSingletDraw(rng):
i=0
g=0
b=0
y=0
r=0
w=0
bk=0
while i<20:
x = rng.randint(1,93)
if x<=44:
g=g+1
elif 44<x<=64:
b=b+1
elif 64<x<=79:
y=y+1
elif 79<x<=90:
r=r+1
elif 90<x<=92:
w=w+1
else:
bk=bk+1
i=i+1
D = {}
D['g'] = g
D['b'] = b
D['y'] = y
D['r'] = r
D['w'] = w
D['bk'] = bk
return D
现在,我所定义的第二功能给我上面的功能得到了上述变量的6倍。它看起来像:
def evaluateQuestion1(draw):
# return True if draw has it right, False otherwise
colorcount = 0
for color in draw:
if draw[color] > 0 : colorcount += 1
if colorcount == 6: return True
else: return False
与最后部分是:
if __name__ == "__main__":
n = 1000
rng = random.Random()
Q1Right = 0
Q1Wrong = 0
for i in xrange(n) :
D = OneSingletDraw(rng)
if evaluateQuestion1(D) : Q1Right += 1
else: Q1Wrong += 1
print "Did %d runs"%n
print "Got question A: total number of colors in bag right %d times, wrong %d times (%.1f %% right)"%(Q1Right, Q1Wrong, 100.*float(Q1Right)/float(n))
它输出是这样的:有没有10次,为单线策略。 得到的问题答:袋中的颜色总数为1次,错误9次(10.0%右)
到目前为止好。现在我想知道它有多少次比b多得多。我试图模仿第二个功能,但它不承认b
def evaluateQuestion2(draw):
# return True if draw has it right, False otherwise
for r in draw:
if draw[r] < b : return True
else: return False
如何让我的下一个功能从早期识别B'
def evaluateQuestion2(draw):
return draw["r"] < draw["b"]
无关您的问题:
林不知道我认识b两种。你没有在你发布的代码中的任何地方定义它。但问题几乎肯定会与范围有关。你必须在函数外部定义一个变量,以便在函数完成之后保持它。 b如何获得第一个功能?你是否将它作为参数传入? – hammus