Author | enile8 |
Submission date | 2011-09-25 14:27:16.908921 |
Rating | 4684 |
Matches played | 2135 |
Win rate | 47.54 |
Use rpsrunner.py to play unranked matches on your computer.
import random
if input != "R" or "P" or "S":
rockCount = 0
paperCount = 0
scissorsCount = 0
myMoves = []
opMoves = []
bothMoves = []
opNextMoveLst = []
losses = 0
output = random.choice(["R", "P", "S"])
else:
if (input == "R" and output == "S") or (input == "P" and output == "R") or (input == "S" and output == "P"):
losses=losses+1
pass
else:
losses = 0
pass
myMoves.append(output)
opMoves.append(input)
bothMoves.append(output + input)
strBoth = output + input
opRMvs = ""
opSMvs = ""
opPMvs = ""
opNmStr = ""
checkBoth = [i for i, x in enumerate(bothMoves) if x == strBoth]
if losses < 4:
if checkBoth != []:
for playMatch in checkBoth:
nextMove = playMatch+1
opNextMove = opMoves[nextMove]
opNextMoveLst.append(opNextMove)
opNmStr = "".join(opNextMoveLst)
opRMvs = opNmStr.count("R")
opSMvs = opNmStr.count("S")
opPMvs = opNmStr.count("P")
if opRMvs > opPMvs and opRMvs > opSMvs:
output = "S"
elif opPMvs > opSMvs:
output = "R"
else:
output = "P"
elif checkBoth == [] and len(opMoves) < 20:
opMvStr = "".join(opMoves)
opRMvs = opMvStr.count("R")
opSMvs = opMvStr.count("S")
opPMvs = opMvStr.count("P")
if opRMvs > opPMvs and opRMvs > opSMvs:
output = "P"
elif opPMvs > opSMvs:
output = "S"
else:
output = "R"
elif len(opMoves) >= 20:
checkOp = [i for i, x in enumerate(opMoves) if x == input]
for playMatch in checkOp:
nextMove = playMatch+1
opNextMove = opMoves[nextMove]
opNextMoveLst.append(opNextMove)
opNmStr = "".join(opNextMoveLst)
opRMvs = opNmStr.count("R")
opSMvs = opNmStr.count("S")
opPMvs = opNmStr.count("P")
if opRMvs > opPMvs and opRMvs > opSMvs:
output = "S"
elif opPMvs > opSMvs:
output = "R"
else:
output = "P"
else:
output = random.choice(["R", "P", "S"])
elif checkBoth != []:
for playMatch in checkBoth:
nextMove = playMatch+1
opNextMove = opMoves[nextMove]
opNextMoveLst.append(opNextMove)
opNmStr = "".join(opNextMoveLst)
opRMvs = opNmStr.count("R")
opSMvs = opNmStr.count("S")
opPMvs = opNmStr.count("P")
if opRMvs > opPMvs and opRMvs > opSMvs:
output = "P"
elif opPMvs > opSMvs:
output = "S"
else:
output = "R"
elif len(opMoves) >= 2:
checkOp = [i for i, x in enumerate(opMoves) if x == input]
for playMatch in checkOp:
nextMove = playMatch+1
opNextMove = opMoves[nextMove]
opNextMoveLst.append(opNextMove)
opNmStr = "".join(opNextMoveLst)
opRMvs = opNmStr.count("R")
opSMvs = opNmStr.count("S")
opPMvs = opNmStr.count("P")
if opRMvs > opPMvs and opRMvs > opSMvs:
output = "P"
elif opPMvs > opSMvs:
output = "S"
else:
output = "R"
else:
output = random.choice(["R", "P", "S"])