fork download
  1. # your code goes here
  2. # Import 'math' Library
  3. import math
  4. import random
  5. # Define Variables
  6. output = 0
  7. process1 = ""
  8. processO = ""
  9. process2 = ""
  10. memStore = "EMPTY"
  11. # Define Vars To Allow Program To Pass The Input Stage
  12. operationD = False
  13. process1D = False
  14. process2D = False
  15. need2 = True
  16. skipOp = False
  17.  
  18. # Define Function Listing Function
  19. def abilitiesList():
  20. print("+...Addition")
  21. print("-...Subtraction")
  22. print("*...Multiplication")
  23. print("/...Division")
  24. print("^...Powers")
  25. print("/-...Square Roots ")
  26. print("!...Factorials (Input Cannot Be Negetave)")
  27. print("Abs...Absolute Value")
  28. print("d/r...Degrees To Radians")
  29. print("r/d...Radians To Degrees")
  30. print("pi...Returns PI")
  31. print("e...Returs 'e'")
  32. print("tau...Returns TAU (2xPI)")
  33. print("M+...Save input to memory")
  34. print("MR...Recall Memory")
  35. print("M-...Clear Memory")
  36. print("sin...Sine")
  37. print("cos...Cosine")
  38. print("tan...Tangent")
  39. print("asin...Arc Sine")
  40. print("acos...Arc Cosine")
  41. print("atan...Arc Tangent")
  42. print("log10...Log(10) of Input")
  43. print("log...Returns The Apropriate Log of the Input (input1 is the log power)")
  44. print("rand...Returns A Random Number Between 0 and 1")
  45. print("randint...Returns A Random Number Between The Two Inputs")
  46. print("//////////////////////////////////////////////////////////////////////////")
  47.  
  48. # While Loop
  49. while(1):
  50. # Reset Variables
  51. operationD = False
  52. process1D = False
  53. process2D = False
  54. print("//////////////////////////////////////////////////////////////////////////")
  55. print("Type 'help' for a list of abilities")
  56. # Operation Input
  57. while(operationD == False):
  58. #print("Hello, What is your Operation (Operator)?")
  59. processO = input("Hello, What is your Operation (Operator)? ")
  60. # Is processO == to any of out constants or predefines?
  61. if processO == "help":
  62. abilitiesList()
  63. processO = ""
  64. skipOp = True
  65. elif processO == "pi":
  66. print(math.pi)
  67. processO = ""
  68. skipOp = True
  69. elif processO == "e":
  70. print(math.e)
  71. processO = ""
  72. skipOp = True
  73. elif processO == "tau":
  74. print(math.pi*2)
  75. processO = ""
  76. skipOp = True
  77. elif processO == "MR":
  78. print(str(memStore))
  79. processO = ""
  80. skipOp = True
  81. elif processO == "M-":
  82. memStore = "Empty"
  83. print("Memory Cleared")
  84. processO = ""
  85. skipOp = True
  86. elif processO == "M+":
  87. process2 = "0"
  88. operationD = True
  89. skipOp = True
  90. if processO=="rand":
  91. print(random.random())
  92. skipOp = True
  93. # Have We Given process1 a Valid Operator?
  94. elif processO == "+" or processO== "-" or processO== "*" or processO== "/" or processO== "^" or processO=="/-" or processO=="!" or processO=="Abs" or processO=="d/r" or processO=="r/d" or processO=="M+" or processO=="M-" or processO=="MR" or processO=="sin" or processO=="cos" or processO=="tan" or processO=="asin" or processO=="acos" or processO=="atan" or processO=="log10" or processO=="log" or processO=="randint":
  95. operationD = True
  96. elif skipOp == True:
  97. processO = ""
  98. else:
  99. print("ERROR: Invalid Operator")
  100. # Do We Need A 2nd Input?
  101. if processO=="/-" or processO=="!" or processO=="Abs" or processO=="d/r" or processO=="r/d" or processO=="M+" or processO=="sin" or processO=="cos" or processO=="tan" or processO=="asin" or processO=="acos" or processO=="atan" or processO=="log10":
  102. need2 = False
  103. else:
  104. need2 = True
  105. # 1st Number Input
  106. while(process1D == False):
  107. #print("First Number?")
  108. process1 = input("First Number? ")
  109. try:
  110. float(process1)
  111. except ValueError:
  112. print("ERROR: Syn: Invalid Num")
  113. else:
  114. if processO == "asin" or processO == "acos":
  115. if int(process1) > 1 or int(process1) < -1:
  116. print("ERROR: Math: 'asin' and 'acos' commands only accept inputs in range -1 to +1")
  117. process1D = False
  118. else:
  119. process1D = True
  120. else:
  121. process1D = True
  122. # 2nd Number Input
  123. while(process2D == False):
  124. if need2 == False:
  125. process2 = "0"
  126. process2D = True
  127. else:
  128. #print("Second Number?")
  129. process2 = input("Second Number? ")
  130. try:
  131. float(process2)
  132. except ValueError:
  133. print("ERROR: Syn: Invalid Num")
  134. else:
  135. process2D = True
  136. # x/0 Error
  137. if processO == "/" and process2 == "0":
  138. #Error
  139. print("ERROR: Math: Canot divide by 0!")
  140. else:
  141. # Typecasting
  142. intProcess1 = float(process1)
  143. # Check if to Typecast intProcess2
  144. if need2 == True:
  145. intProcess2 = float(process2)
  146. # Strategic Processing
  147. if processO == "+":
  148. output=intProcess1+intProcess2
  149. print("Your Answer: "+str(output))
  150. if processO == "-":
  151. output=intProcess1-intProcess2
  152. print("Your Answer: "+str(output))
  153. if processO == "*":
  154. output=intProcess1*intProcess2
  155. print("Your Answer: "+str(output))
  156. if processO == "/":
  157. output=intProcess1/intProcess2
  158. print("Your Answer: "+str(output))
  159. if processO == "^":
  160. output=math.pow(intProcess1,intProcess2)
  161. print("Your Answer: "+str(output))
  162. if processO == "/-":
  163. output=math.sqrt(intProcess1)
  164. print("Your Answer: "+str(output))
  165. if processO == "!":
  166. output=math.factorial(intProcess1)
  167. print("Your Answer: "+str(output))
  168. if processO == "Abs":
  169. output=math.fabs(intProcess1)
  170. print("Your Answer: "+str(output))
  171. if processO=="d/r":
  172. output=math.radians(intProcess1)
  173. print("Your Answer: "+str(output))
  174. if processO=="r/d":
  175. output=math.degrees(intProcess1)
  176. print("Your Answer: "+str(output))
  177. if processO=="M+":
  178. memStore = process1
  179. print("Number Stored")
  180. if processO=="sin":
  181. output=math.sin(intProcess1)
  182. print("Your Answer: "+str(output))
  183. if processO=="cos":
  184. output=math.cos(intProcess1)
  185. print("Your Answer: "+str(output))
  186. if processO=="tan":
  187. output=math.tan(intProcess1)
  188. print("Your Answer: "+str(output))
  189. if processO=="asin":
  190. output=math.asin(intProcess1)
  191. print("Your Answer: "+str(output))
  192. if processO=="acos":
  193. output=math.acos(intProcess1)
  194. print("Your Answer: "+str(output))
  195. if processO=="atan":
  196. output=math.atan(intProcess1)
  197. print("Your Answer: "+str(output))
  198. if processO=="log10":
  199. output=math.log10(intProcess1)
  200. print("Your Answer: "+str(output))
  201. if processO=="log":
  202. output=math.log(intProcess2, intProcess1)
  203. print("Your Answer: "+str(output))
  204. if processO=="randint":
  205. output=random.randint(intProcess1, intProcess2)
  206. print("Your Answer: "+str(output))
Runtime error #stdin #stdout #stderr 0.14s 12264KB
stdin
Standard input is empty
stdout
//////////////////////////////////////////////////////////////////////////
Type 'help' for a list of abilities
Hello, What is your Operation (Operator)? 
stderr
Traceback (most recent call last):
  File "./prog.py", line 59, in <module>
EOFError: EOF when reading a line