diff options
Diffstat (limited to 'comp/skeleton')
-rw-r--r-- | comp/skeleton/__pycache__/code.cpython-313.pyc | bin | 0 -> 9836 bytes | |||
-rw-r--r-- | comp/skeleton/skel.py (renamed from comp/skeleton/code.py) | 21 |
2 files changed, 15 insertions, 6 deletions
diff --git a/comp/skeleton/__pycache__/code.cpython-313.pyc b/comp/skeleton/__pycache__/code.cpython-313.pyc Binary files differnew file mode 100644 index 0000000..9adf17d --- /dev/null +++ b/comp/skeleton/__pycache__/code.cpython-313.pyc diff --git a/comp/skeleton/code.py b/comp/skeleton/skel.py index 495913f..75c4ef9 100644 --- a/comp/skeleton/code.py +++ b/comp/skeleton/skel.py @@ -34,7 +34,7 @@ def PlayGame(Targets, NumbersAllowed, TrainingGame, MaxTarget, MaxNumber): GameOver = False while not GameOver: DisplayState(Targets, NumbersAllowed, Score) - UserInput = input("Enter an expression: ") + UserInput = input("Enter an expression: ").replace(' ', '') print() if CheckIfUserInputValid(UserInput): UserInputInRPN = ConvertToRPN(UserInput) @@ -43,7 +43,11 @@ def PlayGame(Targets, NumbersAllowed, TrainingGame, MaxTarget, MaxNumber): if IsTarget: NumbersAllowed = RemoveNumbersUsed(UserInput, MaxNumber, NumbersAllowed) NumbersAllowed = FillNumbers(NumbersAllowed, TrainingGame, MaxNumber) + else: + print("user input invalid!") Score -= 1 + if Score < 0: + GameOver = True if Targets[0] != -1: GameOver = True else: @@ -55,9 +59,9 @@ def CheckIfUserInputEvaluationIsATarget(Targets, UserInputInRPN, Score): UserInputEvaluation = EvaluateRPN(UserInputInRPN) UserInputEvaluationIsATarget = False if UserInputEvaluation != -1: + Score += 2 for Count in range(0, len(Targets)): if Targets[Count] == UserInputEvaluation: - Score += 2 Targets[Count] = -1 UserInputEvaluationIsATarget = True return UserInputEvaluationIsATarget, Score @@ -90,6 +94,9 @@ def CheckNumbersUsedAreAllInNumbersAllowed(NumbersAllowed, UserInputInRPN, MaxNu Temp.remove(int(Item)) else: return False + else: + if Item.isdigit() == True: + return False return True def CheckValidNumber(Item, MaxNumber): @@ -129,7 +136,7 @@ def DisplayTargets(Targets): def ConvertToRPN(UserInput): Position = 0 - Precedence = {"+": 2, "-": 2, "*": 4, "/": 4} + Precedence = {"+": 2, "-": 2, "*": 4, "/": 4, "^": 6} Operators = [] Operand, Position = GetNumberFromUserInput(UserInput, Position) UserInputInRPN = [] @@ -156,7 +163,7 @@ def ConvertToRPN(UserInput): def EvaluateRPN(UserInputInRPN): S = [] while len(UserInputInRPN) > 0: - while UserInputInRPN[0] not in ["+", "-", "*", "/"]: + while UserInputInRPN[0] not in ["+", "-", "*", "/", "^"]: S.append(UserInputInRPN[0]) UserInputInRPN.pop(0) Num2 = float(S[-1]) @@ -172,6 +179,8 @@ def EvaluateRPN(UserInputInRPN): Result = Num1 * Num2 elif UserInputInRPN[0] == "/": Result = Num1 / Num2 + elif UserInputInRPN[0] == "^": + Result = Num1 ** Num2 UserInputInRPN.pop(0) S.append(str(Result)) if float(S[0]) - math.floor(float(S[0])) == 0.0: @@ -182,7 +191,7 @@ def EvaluateRPN(UserInputInRPN): def GetNumberFromUserInput(UserInput, Position): Number = "" MoreDigits = True - while MoreDigits: + while MoreDigits: if not(re.search("[0-9]", str(UserInput[Position])) is None): Number += UserInput[Position] else: @@ -196,7 +205,7 @@ def GetNumberFromUserInput(UserInput, Position): return int(Number), Position def CheckIfUserInputValid(UserInput): - if re.search("^([0-9]+[\\+\\-\\*\\/])+[0-9]+$", UserInput) is not None: + if re.search("^([0-9]+[\\+\\-\\*\\/\\^])+[0-9]+$", UserInput) is not None: return True else: return False |