iterative prisoners’ dilemma

pmat = np.array([[-25,0],[-20,-5]])

def iterPD(action1, action2, pmat):
# A = defect & defect (-10); B = defect & coop (1)
# C = coop & defect   (9)  ;   D = coop & coop (11)

    result = action1 + action2
    if result == -10:
        po = [pmat[0,0],pmat[0,0]]
    elif result == -9:
        po = [pmat[1,0],pmat[0,1]]
    elif result == 10:
        po = [pmat[0,1],pmat[1,0]]
    else:
        po = [pmat[1,1],pmat[1,1]]
    
    return(po)

def strCoop(mode):
    if mode == "p1":
        return(1)
    else:
        return(10)
    
def strDef(mode):
    if mode == "p1":
        return(0)
    else:
        return(-10)
    
def strTfT(lastPlay, mode):
    if lastPlay == "D":
        if mode == "p1":
            return(0)
        else:
            return(-10)
    else:
        if mode == "p1":
            return(1)
        else:
            return(10)
Nrep = 10
p1Hist = np.zeros([Nrep,2])
p2Hist = np.zeros([Nrep,2])
  
for i_rep in range(Nrep):
    p1 = strDef("p1")
    p2 = strCoop("p2")
    po = iterPD(p1,p2,pmat)
    p1Hist[i_rep,...] = [p1,po[0]]
    p2Hist[i_rep,...] = [p2,po[1]]

lastPlay = "C"
for i_rep in range(Nrep):
    p1 = strCoop("p1")
    p2 = strTfT(lastPlay, "p2")
    if p1 == 0:
        lastPlay = "D"
    else:
        lastPlay = "C"
    po = iterPD(p1,p2,pmat)
    p1Hist[i_rep,...] = [p1,po[0]]
    p2Hist[i_rep,...] = [p2,po[1]]