Как использовать функцию в другой функции в Python

Я должен сделать код, где мне нужно создать игру, которая заставит пользователя угадать уравнение. После окончания каждого предположения я должен показать, какую часть уравнения угадал пользователь. Например, если уравнение равно 1+2*3+4, и пользователь предположил, что в уравнении есть 3, программа скажет, что ваше предположение верно, и до сих пор вы угадали уравнение ---- 3-- (штрихи представляют сколько символов в уравнении. если пользователь угадает 2, то мне нужно уравнение, которое они додумались до сих пор - -2-3--, но я не могу заставить его накапливаться.

функции, которые я использую

def guessing1():
    '''
    the player is asked to make a guess and the result is printed
    '''
    wrongguesses=0
    if (guess1 in randomFormula):
         print "Your guess is correct!"
         wrongguesses=0
    else:
         print "Your guess is wrong!"
         wrongguesses +=1
         if (wrongguesses== max_guesses):
             print "Sorry, you've reached the maximum number of wrong guesses."
             print "Better luck next time!"
             playagain=raw_input("Do you want to play again? y-yes, n-no: ")
             if (playagain== n):
                print "The game is over."  

def formSoFar1():
   a=''
   for i in range (len(randomFormula)):
       if (randomFormula[i] == guess1):
           a += randomFormula[i]
       else:
          a+= "-"
   print "The formula you have guessed so far is: ",a

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

1 ответ

Решение

Я знаю, что это не будет напрямую отвечать на ваш вопрос, но я вернусь к этому.

Я настоятельно рекомендую написать логику, необходимую для достижения цели. Сделайте это на бумаге, и не стесняйтесь делать стрелки, указывающие между тем, что связано, какие критерии необходимы для достижения целей и какова вся идея программы на самом деле.

Это поможет пролить некоторый свет на то, какова ваша настоящая проблема, которую вы хотите решить, и как это сделать.

Итак, ваш первый вопрос: что вы хотите сделать?

Похоже, вы хотите создать игру, похожую на палача, но используя форум, а не буквы.

Во-вторых, вы хотите отслеживать прогресс пользователя - как в достижении, так и в провале.

Победа или поражение зависят от второй части, так что это говорит нам кое-что.

Есть несколько способов сделать это, но самый простой способ - использовать цикл while.

Почему цикл времени? Позволяет проверять условия во время выполнения задачи несколько раз.

Вы хотите проверить условия, которые пользователь не выиграл или проиграл. Так как то так

user_strikes = 0
formula = "1+2*3+4"
user_progress = "" # this will be updated
while game_over is False and user_strikes < STRIKES_ALLOWED:
    # output "make a guess" or something
    if guess in answer:
        # update user_progress
        # perhaps check if user_progress is equal to the formula, then set game_over to True if it is.
    else:
        # update user_strikes. Check here if it's equal to STRIKES_ALLOWED and output a message, since the while loop will end after that iteration.
# here you can check if game_over is True (user won), if strikes is equal to STRIKES_ALLOWED, and do logic based on that
# there are quite a few ways to do this.

Другие вещи, которые нужно иметь в виду: подсчитайте, какие цифры, символы и т. Д. Пользователь уже угадал. Если они угадывают 2 снова и снова, возможно, распечатайте "Уже угадал" или что-то вроде этого. Вместо проверки нескольких переменных, связанных с состоянием игры, вы можете использовать только одну переменную, для которой задано число. Проверьте значение этого числа и базовые действия от этого. Итак, game_state = 1 # игра выиграна; game_state = 2 # игра проиграна и т. д.

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

В заключение я настоятельно рекомендую выяснить, какие у вас проблемы. Отсюда вы можете значительно сэкономить время и энергию, чтобы найти правильный способ ее решения.

Другие вопросы по тегам