Add IQR and fix exit bug

This commit is contained in:
Ryan Whytsell 2023-12-23 19:33:16 -05:00
parent ad44e727b0
commit dc403de240
No known key found for this signature in database
GPG Key ID: BD7B18309414DE50
1 changed files with 27 additions and 6 deletions

33
main.py
View File

@ -1,7 +1,7 @@
import ast
import math
VERSION = "0.0.0"
VERSION = "0.0.1"
sContinue = True
state = []
@ -13,6 +13,7 @@ def show_help():
print("pstdev - get the population standard deviation of the current dataset")
print("variance - get the variance of the current dataset")
print("pvariance - get the population variance of the current dataset")
print("iqr - upper and lower interquartile range of the current dataset")
print("mean - get the mean of the current dataset")
print("median - get the median of the current dataset")
print("mode - get the mode of the current dataset")
@ -41,13 +42,14 @@ def get_median():
:return: The median value of the sorted `state` list.
"""
global state
state.sort()
n = len(state)
sorted_state = state
sorted_state.sort()
n = len(sorted_state)
median = 0
if n % 2 == 0:
median = (state[n // 2 - 1] + state[n // 2]) / 2
median = (sorted_state[n // 2 - 1] + sorted_state[n // 2]) / 2
else:
median = state[n // 2]
median = sorted_state[n // 2]
return median
@ -61,6 +63,23 @@ def get_mode():
return mode
def get_iqr():
global state
sorted_state = state
sorted_state.sort()
middle = int(len(sorted_state) // 2)
lower = sorted_state[:middle]
upper = sorted_state[middle + 1 if len(sorted_state) % 2 == 1 else middle:len(sorted_state)]
if len(lower) % 2 == 0:
l_iqr = (lower[len(lower)//2-1] + lower[len(lower)//2])/2
u_iqr = (upper[len(upper)//2-1] + upper[len(upper)//2])/2
else:
l_iqr = lower[(len(lower) // 2)]
u_iqr = upper[(len(upper) // 2)]
r_iqr = u_iqr - l_iqr
return l_iqr, u_iqr, r_iqr
def get_variance():
global state
n = len(state)
@ -97,7 +116,6 @@ def start_shell():
global state
state = []
print(f'Welcome to math-shell v{VERSION}')
handle_input()
def handle_input():
@ -130,6 +148,9 @@ def handle_input():
print(get_variance())
case 'pvariance':
print(get_population_variance())
case 'iqr':
lower, upper, range = get_iqr()
print(f"Lower: {lower} - Upper: {upper} - Range: {range}")
case 'print':
if state is not None:
print(f"{state}")