我对函数不太熟悉,我正试图弄清楚如何从一个函数中得到一个值,然后将其放入另一个函数中。下面是布局:我定义了一个函数来提取随机数并将它们放入字典:
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次。 问题A:包内颜色总数正确1次,错误9次(正确10.0%)
到目前为止还不错。现在我想看看它得到的r比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?你知道吗
在第二个函数中不需要循环,只需直接比较字典的
"r"
和"b"
键对应的值:与您的问题无关:您可以通过预先创建字典并更新其值来简化绘图代码,而不是将值最初放在单独的变量中,然后在末尾构建字典:
相关问题 更多 >
编程相关推荐