Я пишу код, который присваивает звание бразильским игрокам джиу-джитсу.Формула ранжирования заимствована из шахмат (метод ELO Rating), но для корректного отражения BJJ необходимо внести некоторые коррективы.У меня есть три условные функции, через которые должна проходить оценка, чтобы она корректно обновлялась:
Elo_Score
уже рассчитана на основе исходной формулы, и теперь оценка должна проходить через одну из следующих функций, чтобы увидеть,нуждается в корректировке.
def Weight_Age_Rank_Dif():
"""this functions checks for a certain weight, age AND rank difference
between two players.
(it will kick in if the difference is bigger than 10 kilos, 15 years,
AND 100 rating points; so think of it as a smaller, less experienced
older guy fighting a bigger, more experienced and much younger
opponent)."""
def Weight_Dif():
"""this function checks for a weight difference only (10 or more kilos
between opponents)"""
def Age_Dif():
"""this function checks for an age difference only (10 or more years between
two players AND at least one player over 50; so it would have no effect
between two guys who were 22 and 34)."""
# PRINT RESULTS
Идея этих функций заключается в том, чтобы обеспечить амортизаторам (меньшим, менее опытным или значительно более старшим ребятам).Если они выигрывают, они выигрывают больше очков, а если они проигрывают, они теряют меньше.
Мой вопрос: как мы можем убедиться, что выполняется только ОДНА из функций?Итак, если два игрока выполнили все условия для первой функции, то как мы можем быть уверены, что код переходит непосредственно к # PRINT RESULTS
, не касаясь двух других?
Кроме того, каждая функция имеет несколько условных операторов.Например, в функции Weight_Age_Rank_Dif()
есть 8 условных операторов.Когда выполняется одно из этих условий, как мы можем заставить код выйти из функции, пропустить две другие функции и перейти непосредственно к # PRINT RESULTS
?
Я попытался превратить весь сценарий в один гигантский условный оператор с кучей elif
операторов, но он не работает, потому что вложенные условные выражения в elif
операторах выдают UnboundLocalError
, и он кажется неэффективнымкаждый раз вводить глобальную переменную.