Как использовать функцию в другой функции в 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 # игра проиграна и т. д.
По твоему актуальному вопросу, казалось, ты задавался вопросом о закрытии. Использование замыканий может быть полезным для вас, поэтому, пожалуйста, не стесняйтесь читать их и решать, требует ли их ситуация.
В заключение я настоятельно рекомендую выяснить, какие у вас проблемы. Отсюда вы можете значительно сэкономить время и энергию, чтобы найти правильный способ ее решения.