2016-12-26 43 views
-1

在以下代码中,我们将值0.5赋值给变量b。然后我们给变量L1和L2分配一个字母,并将其存储在字典中。最后,我们有4个方程式(P11,P12,P21,P22),我们将这些变量相加。用条件重新赋值

我的具体问题:

我怎样才能“重新分配”(每个方程)值0和b,只有在两个字典中的值是0?

我的伪问题:

In all the equations Pii: 
if Di[Li]==0 and Di[Li]==0: 
then b==0 

我的代码:

import random 
b=0.5 
L1= random.choice("ABCDEFGH") 
L2= random.choice("ABCDEFGH") 
D1 = {"A":0,"B":0,"C":0,"D":0,"E":0,"F":0,"G":0,"H":0} 
D2 = {"A":0,"B":0,"C":0,"D":0,"E":0,"F":0,"G":0,"H":0} 
for n in range(1): 
    D1[L1] += 1 
for n in range(1): 
    D2[L2] += 1 

P11=D1[L1]+D2[L1]+b 
P12=D1[L2]+D2[L2]+b 
P21=D1[L1]+D2[L2]+b 
P22=D1[L2]+D2[L1]+b 

print P11, P12, P21, P22 

在这种情况下,我希望获得:

P11= 1 + 0 + 0.5 
P12= 0 + 1 + 0.5 
P21= 1 + 1 + 0.5 
P22= 0 + 0 + 0 
+0

请也不在话下你得到的结果和你的期望。您的代码似乎按照您所提及的应该做的(按照当前内容) –

+0

我已经添加了预期的结果 – pyring

回答

0

不要更改b值,只是改变你是否加b

def with_b(x, y): 
    result = x + y 
    if not (x == y == 0): 
     result += b 
    return result 

P11 = with_b(D1[L1], D2[L1]) 
P12 = with_b(D1[L2], D2[L2]) 
P21 = with_b(D1[L1], D2[L2]) 
P22 = with_b(D1[L2], D2[L1]) 
+0

是的,只有当存储在字典中的值都为0时,我才会在b中具有值0。谢谢。 – pyring

+0

@pyring这是怎么回事? –

+0

我已经添加了我期望获得的结果,但与您的代码不同。无论如何感谢您的帮助 – pyring

0

我不确定明白你最终的目标是什么,但如果我理解得好,你的问题是:“如何使用条件? 您可以在此基础上synthax做一些事情:

if(dictionnaryValue1==0 and dictionnaryValue2==0): 
    b=0 

而且我不明白你的循环“为”:for n in range(1) 在循环中的代码只执行一次......