Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1. # Import random library to flip coin
  2. # Template for a all English coins (1p, 2p, 5p, 10p, 20p, 50p, 1pnd, 2pnd)
  3.  
  4.  
  5. import random
  6.  
  7.  
  8. class Coin:
  9. # constructor
  10. def __init__(self, rare = False, clean = True, heads = True, **kwargs):
  11. # 'self' is a parameter convention
  12. # kwargs accept the super function below
  13.  
  14. for key,value in kwargs.items():
  15. # Loops through all items
  16. setattr(self,key,value)
  17. # Sets the states from the superimposed Pound dictionary
  18.  
  19. self.is_rare = rare
  20. self.is_clean = clean
  21. self.heads = heads
  22.  
  23. if self.is_rare:
  24. self.value = self.original_value * 1.25
  25. else:
  26. self.value = self.original_value
  27.  
  28. if self.is_clean:
  29. self.colour = self.clean_colour
  30. else:
  31. self.colour = self.rusty_colour
  32.  
  33. def rust(self):
  34. self.colour = self.rusty_colour
  35.  
  36.  
  37. def clean(self):
  38. self.colour = self.clean_colour
  39.  
  40. def __del__(self):
  41. print("Coin Spent!")
  42.  
  43.  
  44. def flip(self):
  45. heads_options = [True, False]
  46. H_O_T = random.choice(heads_options)
  47. self.heads = H_O_T
  48.  
  49. def __str__(self):
  50. if self.original_value >= 1.00:
  51. return "£{} Coin".format(int(self.original_value))
  52. else:
  53. return "{}p Coin".format(int(self.original_value * 100))
  54.  
  55.  
  56. class One_Pence(Coin):
  57. def __init__(self):
  58. # Dictionary for "Pound" class
  59. data = {
  60. "original_value": 0.01,
  61. "clean_colour": "bronze",
  62. "rusty_colour": "brownish",
  63. "num_edges": 1,
  64. "diameter": 20.3,
  65. "thickness": 1.52,
  66. "mass": 3.56
  67. }
  68. super().__init__(**data)
  69. # function passes kwargs data from the pound class into the coin class
  70.  
  71. class Two_Pence(Coin):
  72. def __init__(self):
  73.  
  74. data = {
  75. "original_value": 0.02,
  76. "clean_colour": "bronze",
  77. "rusty_colour": "brownish",
  78. "num_edges": 1,
  79. "diameter": 25.9,
  80. "thickness": 1.85,
  81. "mass": 7.12
  82. }
  83. super().__init__(**data)
  84.  
  85. class Five_Pence(Coin):
  86. def __init__(self):
  87.  
  88. data = {
  89. "original_value": 0.05,
  90. "clean_colour": "silver",
  91. "rusty_colour": None, # Silver coins don't rust! This overrides the default
  92. "num_edges": 1,
  93. "diameter": 18.0,
  94. "thickness": 1.77,
  95. "mass": 3.25
  96. }
  97. super().__init__(**data)
  98.  
  99. def rust(self):
  100. self.colour = self.clean_colour # Polymorphism (not nessesary)
  101.  
  102. def clean(self):
  103. self.colour = self.clean_colour
  104.  
  105. class Ten_Pence(Coin):
  106. def __init__(self):
  107.  
  108. data = {
  109. "original_value": 0.10,
  110. "clean_colour": "silver",
  111. "rusty_colour": None,
  112. "num_edges": 1,
  113. "diameter": 24.5,
  114. "thickness": 1.85,
  115. "mass": 6.50
  116. }
  117. super().__init__(**data)
  118.  
  119. def rust(self):
  120. self.colour = self.clean_colour # Polymorphism (not nessesary)
  121.  
  122. def clean(self):
  123. self.colour = self.clean_colour
  124.  
  125.  
  126. class Twenty_Pence(Coin):
  127. def __init__(self):
  128.  
  129. data = {
  130. "original_value": 0.20,
  131. "clean_colour": "silver",
  132. "rusty_colour": None,
  133. "num_edges": 7,
  134. "diameter": 21.4,
  135. "thickness": 1.7,
  136. "mass": 5.00
  137. }
  138. super().__init__(**data)
  139.  
  140. def rust(self):
  141. self.colour = self.clean_colour # Polymorphism (not nessesary)
  142.  
  143. def clean(self):
  144. self.colour = self.clean_colour
  145.  
  146. class Fifty_Pence(Coin):
  147. def __init__(self):
  148.  
  149. data = {
  150. "original_value": 0.50,
  151. "clean_colour": "silver",
  152. "rusty_colour": None,
  153. "num_edges": 7,
  154. "diameter": 27.3,
  155. "thickness": 1.78,
  156. "mass": 8.00
  157. }
  158. super().__init__(**data)
  159.  
  160. def rust(self):
  161. self.colour = self.clean_colour # Polymorphism (not nessesary)
  162.  
  163. def clean(self):
  164. self.colour = self.clean_colour
  165.  
  166. class One_Pound(Coin):
  167. def __init__(self):
  168.  
  169. data = {
  170. "original_value": 1.00,
  171. "clean_colour": "gold",
  172. "rusty_colour": "greenish",
  173. "num_edges": 1,
  174. "diameter": 22.5,
  175. "thickness": 3.15,
  176. "mass": 9.5
  177. }
  178. super().__init__(**data)
  179.  
  180. class Two_Pound(Coin):
  181. def __init__(self):
  182.  
  183. data = {
  184. "original_value": 2.00,
  185. "clean_colour": "gold & silver",
  186. "rusty_colour": "greenish",
  187. "num_edges": 1,
  188. "diameter": 22.4,
  189. "thickness": 2.50,
  190. "mass": 12.00
  191. }
  192. super().__init__(**data)
  193.  
  194.  
  195. coins = [One_Pence(), Two_Pence(), Five_Pence(), Ten_Pence(),Twenty_Pence(), Fifty_Pence(),
  196. One_Pound(), Two_Pound()]
  197.  
  198. for coin in coins:
  199. arguments = [coin, coin.colour, coin.value, coin.diameter, coin.thickness, coin.num_edges, coin.mass]
  200.  
  201. string = "Colour: {}, value: {}, diameter(mm): {}, thickness(mm): {}, number of edges:{}, mass(g):{}".format(*arguments)
  202. print(string)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement