Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. from math import *
  2. from random import randint
  3. import sys
  4.  
  5.  
  6. def main():
  7.     partnerAyears = 0
  8.     partnerByears = 0
  9.     partnerAstrategy = 0
  10.     partnerBstrategy = 0
  11.     partnerAstrategy, partnerBstrategy = get_strat()
  12.     trials = get_num_trials()
  13.     partnerAyears, partnerByears = run_trials(partnerAstrategy, partnerBstrategy, partnerAyears, partnerByears, trials)
  14.     print("Partner A spent ", partnerAyears / trials, " average years in jail")
  15.     print("Partner B spent ", partnerByears / trials, " average years in jail")
  16.  
  17.  
  18. def run_trials(partnerAstrat, partnerBstrat, partnerA, partnerB, count):
  19.     if count == 0:
  20.         return 0, 0
  21.     return run_trials_rec(partnerAstrat, partnerBstrat, partnerA, partnerB, count)
  22.  
  23.  
  24. # Recursive function
  25. def run_trials_rec(partnerAstrat, partnerBstrat, partnerA, partnerB, count):
  26.     if count == 0:
  27.         return partnerA, partnerB
  28.     # Let 1 equal coop, and 0 equal silent
  29.     choiceA = partnerAstrat
  30.     choiceB = partnerBstrat
  31.  
  32.     yearsAddedforA = 0
  33.     yearsAddedforB = 0
  34.     if choiceA == 1 and choiceB == 1:
  35.         yearsAddedforA = 4
  36.         yearsAddedforB = 4
  37.     if choiceA != choiceB:
  38.         if choiceA == 0:
  39.             yearsAddedforA = 6
  40.             yearsAddedforB = 0
  41.         else:
  42.             yearsAddedforA = 0
  43.             yearsAddedforB = 6
  44.     if choiceA == 0 and choiceB == 0:
  45.         yearsAddedforA = 2
  46.         yearsAddedforB = 2
  47.  
  48.     partnerA += yearsAddedforA
  49.     partnerB += yearsAddedforB
  50.     count = count - 1
  51.  
  52.     return run_trials_rec(partnerAstrat, partnerBstrat, partnerA, partnerB, count)
  53.  
  54.  
  55. def get_num_trials():
  56.     trials = int(input("Enter a number from 10-500 "))
  57.     if trials < 10 or trials > 500:
  58.         print("Please enter a number between 10 and 500 ")
  59.         return get_num_trials()
  60.     else:
  61.         return trials
  62.  
  63.  
  64. def get_strat():
  65.     print("3 strategies available:")
  66.     print("1: Random")
  67.     print("2: Only-Silent")
  68.     print("3: Only-Cooperates")
  69.     partnerA = get_strategy('A')
  70.     partnerB = get_strategy('B')
  71.  
  72.     # We need to change the values, because we need the value to match our recursive method
  73.     if partnerA == 2:
  74.         partnerA = 0
  75.     elif partnerA == 3:
  76.         partnerA = 1
  77.     else:
  78.         partnerA = randint(0, 1)
  79.  
  80.     if partnerB == 2:
  81.         partnerB = 0
  82.     elif partnerB == 3:
  83.         partnerB = 1
  84.     else:
  85.         partnerB = randint(0, 1)
  86.  
  87.     return partnerA, partnerB
  88.  
  89.  
  90. # Recursive function to get strategy
  91. def get_strategy(letter):
  92.     number = 0
  93.     print("Please enter partner ", letter, "'s strategy")
  94.     number = int(input())
  95.     if number <= 0 or number > 3:
  96.         print("Must enter a number between 1 and 3")
  97.         print("Please try again")
  98.         return get_strategy(letter)
  99.     else:
  100.         return number
  101.  
  102.  
  103. if __name__ == "__main__":
  104.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement