-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculator.py
371 lines (302 loc) · 10.1 KB
/
calculator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
import math
from fractions import Fraction
import os
def cls():
os.system("cls" if os.name == "nt" else "clear")
def find_roots(a, b, c):
cls()
discriminant = (b**2) - (4 * a * c)
sqrt_D = math.sqrt(abs(discriminant))
if discriminant > 0:
print("This equation has: 2 real roots")
print("\n")
print("Discriminant: " + str(discriminant))
print("\n")
print("Solution 1. -> " + str((-b + sqrt_D) / (2 * a)))
print("Solution 2. -> " + str((-b - sqrt_D) / (2 * a)))
print("\n")
elif discriminant == 0:
print("This equation has: 1 real root")
print("\n")
print("Discriminant: " + str(discriminant))
print("\n")
print("Solution 1. -> " + str(-b / (2 * a)))
print("\n")
else:
print("This equation has: 2 complex roots")
print("\n")
print("Discriminant: " + str(discriminant))
print("\n")
real_part = -b / (2 * a)
imaginary_part = sqrt_D / (2 * a)
print(f"Solution 1. -> {real_part:.2f} + {imaginary_part:.4f} * i")
print(f"Solution 2. -> {real_part:.2f} - {imaginary_part:.4f} * i")
print("\n")
def mean():
string = input("What numbers would you like to find the mean of? (no commas)\n> ")
num_list = [int(element) for element in string.split()]
mean = str(sum(num_list)/len(num_list))
print("The mean is " + mean)
def median():
string = input("What numbers would you like to find the median of? (no commas)\n> ")
num_list = [int(element) for element in string.split()]
num_list.sort()
if len(num_list) % 2 == 0:
m1 = num_list[len(num_list)//2]
m2 = num_list[len(num_list)//2 - 1]
median = str((m1 + m2)/2)
else:
median = num_list[len(num_list)//2]
print("The median is " + median)
def mode():
string = input("What numbers would you like to find the mode of? (no commas)\n> ")
num_list = [int(element) for element in string.split()]
frequency = {}
for i in num_list:
frequency.setdefault(i, 0)
frequency[i]+=1
frequent = max(frequency.values())
for i, j in frequency.items():
if j == frequent:
mode = str(i)
print("The mode is " + mode)
def convert_C_to_F():
c = int(input("Enter a temperature to convert from Celsius to Fahrenheit.\n> "))
print(str(c) + "°C is " + str(((9/5) * c) + 32) + "°F")
def convert_F_to_C():
f = int(input("Enter a temperature to convert from Fahrenheit to Celsius.\n> "))
print(str(f) + "°F is " + str((f - 32) * (5/9)) + "°C")
def find_factorial():
num = int(input("What number would you like to find the factorial of?\n> "))
cls()
factorial = 1
if num < 0:
print(f"{num}! is undefined")
elif num == 0:
print(f"{num}! = 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print(f"{num}! = {factorial}")
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
def exponentiate(x, y):
return x ** y
def sqrt(x):
return math.sqrt(x)
def cbrt(x):
return x ** (1/3)
def nthrt(x, y):
return y ** (1/x)
def log(x, base):
return math.log(x, base)
def sin(x):
return math.sin(x)
def cos(x):
return math.cos(x)
def tan(x):
return math.tan(x)
def asin(x):
return math.asin(x)
def acos(x):
return math.acos(x)
def atan(x):
return math.atan(x)
def csc(x):
return 1 / math.sin(x)
def sec(x):
return 1 / math.cos(x)
def cot(x):
return 1 / math.tan(x)
cls()
print("Python Calculator \n‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾")
print("1. Addition")
print("2. Subtraction")
print("3. Multiplication")
print("4. Divison")
print("5. Exponentiation")
print("6. Square Root")
print("7. Cube Root")
print("8. Nth Root")
print("9. Logarithms")
print("10. Trigonomentric Functions")
print("11. Conversions")
print("12. Mean, Median and Mode")
print("13. Quadratic Equation Solver")
print("14. Factorial")
choice = input("What would you like to do today? (Number) \n> ")
if choice == "1":
cls()
num1 = float(input("What is the first number? "))
num2 = float(input("What is the second number? "))
print(num1, "+", num2, "=", add(num1, num2))
elif choice == "2":
cls()
num1 = float(input("What is the first number? "))
num2 = float(input("What is the second number? "))
print(num1, "-", num2, "=", subtract(num1, num2))
elif choice == "3":
cls()
num1 = float(input("What is the first number? "))
num2 = float(input("What is the second number? "))
print(num1, "*", num2, "=", multiply(num1, num2))
elif choice == "4":
cls()
num1 = float(input("What is the first number? "))
num2 = float(input("What is the second number? "))
print(num1, "/", num2, "=", divide(num1, num2))
elif choice == "5":
cls()
num1 = float(input("What is the first number? "))
num2 = float(input("What is the second number? "))
print(num1, "^", num2, "=", exponentiate(num1, num2))
elif choice == "6":
cls()
num1 = float(input("What number would you like to find the square root of? "))
print("√", num1, "=", math.sqrt(num1))
elif choice == "7":
cls()
num1 = float(input("What number would you like to find the cube root of? "))
print("∛", num1, "=", cbrt(num1))
elif choice == "8":
cls()
num1 = float(input("What is the index of the radicand? "))
num2 = float(input("What is the radicand? "))
print(num1, "√", num2, "=", nthrt(num1, num2))
elif choice == "9":
cls()
num1 = float(input("What is the argument of the logarithm? "))
base = float(input("What is the base of the logarithm? "))
print("Log to the base", base, "of", num1, "=", math.log(num1, base))
elif choice == "10":
cls()
print("1. Sine")
print("2. Cosine")
print("3. Tangent")
print("4. Arc Sine")
print("5. Arc Cosine")
print("6. Arc Tangent")
print("7. Cosectant")
print("8. Secant")
print("9. Cotangent")
choice2 = input("Which Trig function would you like to use? (Number) \n> ")
if choice2 == "1":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("sin of", num1, "=", sin(num1), "(Answer in radians)")
elif choice2 == "2":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("cos of", num1, "=",cos(num1), "(Answer in radians)")
elif choice2 == "3":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("tan of", num1, "=",tan(num1), "(Answer in radians)")
elif choice2 == "4":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("asin of", num1, "=",asin(num1), "(Answer in radians)")
elif choice2 == "5":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("acos of", num1, "=",acos(num1), "(Answer in radians)")
elif choice2 == "6":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("atan of", num1, "=",atan(num1), "(Answer in radians)")
elif choice2 == "7":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("csc of", num1, "=",csc(num1), "(Answer in radians)")
elif choice2 == "8":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("sec of", num1, "=",sec(num1), "(Answer in radians)")
elif choice2 == "9":
cls()
num1 = float(input("What is the first number (no fractions)? "))
print("cot of", num1, "=",cot(num1), "(Answer in radians)")
elif choice == "11":
cls()
print("1. Decmial to Percentage")
print("2. Decmial to Fraction")
print("3. Fraction to Percentage")
print("4. Fraction to Decimal")
print("5. Percentage to Decimal")
print("6. Percentage to Fraction")
print("7. Fahrenheit to Celsius")
print("8. Celsius to Fahrenheit")
choice3 = input("What conversion would you like to do? (Number) \n> ")
if choice3 == "1":
cls()
num1 = float(input("What number would you like to convert to a percentage? "))
print(num1, "as a percentage is", (num1 * 100), "%")
elif choice3 == "2":
cls()
num1 = float(input("What number would you like to convert to a fraction? "))
print(num1, "as a fraction is", Fraction(num1).limit_denominator())
elif choice3 == "3":
cls()
frac1 = input("What fraction would you like to convert to a percentage? ")
num1 = float(Fraction(frac1))
print(frac1, "as a percentage is", (num1 * 100), "%")
elif choice3 == "4":
cls()
frac1 = input("What fraction would you like to convert to a decimal? ")
num1 = float(Fraction(frac1))
print(frac1, "as a decimal is", num1)
elif choice3 == "5":
cls()
num1 = float(input("What percentage would you like to convert to a decimal? (No percent sign) "))
print(num1, "as a decimal is", (num1 / 100))
elif choice3 == "6":
cls()
num1 = float(input("What percentage would you like to convert to a fraction? (No percent sign) "))
num2 = num1 / 100
print(num1, "%" + " as a fraction is", Fraction(num2).limit_denominator())
elif choice3 == "7":
cls()
convert_F_to_C()
elif choice3 == "8":
cls()
convert_C_to_F()
else:
print("Invalid Input")
elif choice == "12":
cls()
print("1. Mean")
print("2. Median")
print("3. Mode")
choice4 = input("What would you like to do today? (number)\n> ")
if choice4 == "1":
cls()
mean()
elif choice4 == "2":
cls()
median()
elif choice4 == "3":
cls()
mode()
elif choice == "13":
cls()
print("Quadratic equation, Standard Form:\n\nax^2 + bx + c = 0\n\n")
a = float(input('What is "a"?\n> '))
b = float(input('What is "b"?\n> '))
c = float(input('What is "c"?\n> '))
if a == 0:
print('Invalid Input. "a" cannot be equal to 0. Please try again.')
else:
find_roots(a, b, c)
elif choice == "14":
cls()
find_factorial()
else:
print("Invalid input, try again")
os.system("pause")
cls()