commit 3ae519a6bd2c3ff4c4b4207c17b2a43077143da8 Author: Ryan Whytsell Date: Sat Dec 23 15:47:28 2023 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0bb77a8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +./.idea \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..e32529f --- /dev/null +++ b/main.py @@ -0,0 +1,95 @@ +import ast + +# Press Shift+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. +VERSION = "0.0.0" +sContinue = True + + +state = [] + + +def show_help(): + print("vector [5,6,7...] - set the current dataset to the given vector") + print("stdd - get the standard deviation 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") + print("var - get the variance of the current dataset") + print("print - prints the current dataset") + print("clear - clears the current dataset") + print("clr - clears the screen") + + +def get_mean(): + """ + Get the mean value of the state vector. + + :return: The average value of the state vector. + """ + global state + mean = sum(state) / len(state) + return mean + + +def get_median(): + """ + This function calculates the median of the state vector. + The implementation uses the algorithm based on sorting. + + :return: The median value of the sorted `state` list. + """ + global state + state.sort() + n = len(state) + median = 0 + if n % 2 == 0: + median = (state[n // 2 - 1] + state[n // 2]) / 2 + else: + median = state[n // 2] + return median + + +def start_shell(): + global state + state = [] + print(f'Welcome to math-shell v{VERSION}') + handle_input() + + +def handle_input(): + global state + value = [] + print('>>>', end=' ') + i = input() + should_split = i.__contains__(' ') + if should_split: + command, value = i.split(sep=' ', maxsplit=1) + value = ast.literal_eval(value) + else: + command = i + + match command.lower(): + case 'vector': + state = value + print(f"Set state to: {value}") + case 'mean': + print(get_mean()) + case 'print': + if state is not None: + print(f"{state}") + else: + print("No state") + case 'exit': + return False + case other: + show_help() + return True + + +if __name__ == '__main__': + start_shell() + while sContinue: + sContinue = handle_input() + +