Цикл главной функции при сбросе переменных - PullRequest
0 голосов
/ 07 апреля 2019

Я только начал изучать Python в своем классе по вычислительной технике.Мы должны построить программу, которая создает практические занятия по математике.Пользователь вводит два числа: оператор, затем решение, и программа сообщает им, являются ли они правильными / неправильными.После этого программа должна вернуться назад, чтобы пользователь мог продолжить практику.Предполагается, что программа зациклится на 5 тренировочных наборов.У меня есть цикл, но когда он выполняется, он повторяет вводы, изначально введенные пользователем, вместо сброса, поэтому пользователь не может делать больше вводов.Чего мне не хватает?

Я пробовал некоторое время цикл True: для моих глобальных переменных, но это просто заставляет основную функцию зацикливаться, не завершая программу.Назначение очень четко диктует, что необходимо использовать цикл while, поскольку мой профессор включил небольшие подсказки, чтобы помочь нам.

num1 = int(input("Enter First Input: "))
num2 = int(input("Enter Second Input: "))
op = str(input("Enter Operator: "))
UserSolution = int(input("Enter Solution: "))
res1 = num1+num2
res2 = num1-num2
res3 = num1*num2
res4 = num1/num2
timesCorrect = 0
timesIncorrect = 0

def main ():
    counter = 0
    while counter < 4:      
        print(num1)
        print(num2)
        print(op)
        print(UserSolution)
        counter = counter + 1

Функция действительно циклична, как я хочу, но это не таксброс переменных, как я хочу.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

Возможно, это будет немного за рамками вашего задания, но вот непроверенное предложение:

# Mix it up a little by hiding the user's suggested solution with getpass()
from getpass import getpass

### Set iterator variable to avoid hard-coding the script
max_iterations = 5


def evaluate_expression(first_input, second_input, operator):
    """
        Function to handle arithmetic
    """
    my_solution = 0
    if operator == '+':
        my_solution = first_input + second_input
    elif operator == '-':
        my_solution = first_input - second_input
    elif operator == '/':
        # Can't divide by zero, so we have to handle that.
        if second_input != 0:
            my_solution = first_input / second_input
        else:
            my_solution = 0
    elif operator == '*':
        my_solution = first_input * second_input
    return my_solution

def main():

    ### Counters
    correct_guesses = 0
    incorrect_guesses = 0
    try_counter = 1

    while try_counter <= max_iterations:      
        num1 = int(input("Enter First Input: "))
        num2 = int(input("Enter Second Input: "))
        op = str(input("Enter Operator: "))
        UserSolution = int(getpass("Enter Solution: ")) # Hide the input

        ### We van evaluate the expression and return the result to a variable using eval()
        # temp_solution = eval(f'{num1} {op} {num2}')

        ## Traditional evaluation method
        #if op == '+':
        #    my_solution = num1 + num2
        #elif op == '-':
        #    my_solution = num1 - num2
        #elif op == '/':
        #    my_solution = num1 / num2
        #elif op == '*':
        #    my_solution = num1 * num2

        # Call our expression and evaluate the results
        if evaluate_expression(num1, num2, op) == UserSolution:
            print('You\'re correct!')
            correct_guesses += 1
        else:
            print('Incorrect answer!')
            incorrect_guesses += 1

        try_counter += 1
    print(f'Number of correct guesses: {correct_guesses]\nNumber of incorrect guesses: {incorrect_guesses}')
0 голосов
/ 07 апреля 2019

Вам необходимо переместить свои операторы ввода в цикл, например:

timesCorrect = 0
timesIncorrect = 0

def main ():
    counter = 0
    while counter < 4:
        num1 = int(input("Enter First Input: "))
        num2 = int(input("Enter Second Input: "))
        op = str(input("Enter Operator: "))
        UserSolution = int(input("Enter Solution: "))
        res1 = num1 + num2
        res2 = num1 - num2
        res3 = num1 * num2
        res4 = num1 / num2
        print(num1)
        print(num2)
        print(op)
        print(UserSolution)
        counter = counter + 1

Кроме того, если вы хотите, чтобы цикл повторялся пять раз, вам нужно изменить счетчик сравнения на < 5,или <= 4 вместо < 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...