В приведенном ниже коде из моей внутренней функции, независимо от того, набрали ли баллы единственное возвращаемое значение - (0, None)
. Я вижу, что for
l oop заканчивается, когда команда достигает порогов победы или милосердия, но это не действует как возвращаемое значение для всей функции. Я не помню, чтобы операторы return работали подобным образом, поэтому кто-нибудь может объяснить, почему это происходит?
def victory_check() -> Tuple[Optional[int], Optional[Team]]:
scores_all_bad: bool = True
for team in tea_lst:
print(team.score) # debug
if team.score >= victory_threshold:
return 1, team
if team.score < mercy_rule:
return -1, team
if team.score > bad_ai_end:
scores_all_bad = False
if scores_all_bad:
return -1, None
return 0, None
Объект Team
создается следующим образом. Испытательный жетон добавляет случайное целое число от -12 до 14 к счету каждой команды, притворяясь, что играет руку. Значения Team.score
правильно отражены в операторе печати.
class Team:
players: List[Player]
score: int = 0
bid: int
def __init__(self, players: List[Player]):
self.players = players