Если вы просто ищете прямо функции, Bi-Рико имеет правильный ответ. Тем не менее, вы указываете область обзора, и ваш код выглядит так, будто он пытается стать классом. Итак, давайте построим правильный класс.
Внутри функций класса называются методами. Это своего рода фантазии способ сказать «объем этих функций находятся внутри класса„One“
import random
class One(object):
home_goals =()
away_goals =()
def playGame(self):
self.home_goals = round(random.uniform(0,10.0))
self.away_goals = round(random.uniform(0.1,10.0))
return self.home_goals, self.away_goals
def determineWinner(self):
if not self.home_goals or not self.away_goals:
print("Teams must play game first!")
return None
if self.home_goals > self.away_goals:
winner = ("home")
elif self.home_goals == self.away_goals:
winner = ("draw")
else:
winner = ("away")
print(winner)
return winner
## usage
one_obj = One() #create instance of One()
home, away = one_obj.playGame()
game1 = one_obj.determineWinner()
one_obj.playGame() #play a new game
game2 = one_obj.determineWinner()
Классы имеют специальную переменную под названием„я“, который является способом объект one_obj
разделяет переменную home_goals
и away_goals
между этими двумя методами.
Если мы не использовали себя, мы должны были бы сохранить вывод от одного метода и передать их в другой.
Вы можете сделать это с помощью декоратора называется @staticmethod
import random
# still using a class but without self
class Two(object):
@staticmethod
def playGame():
home_goals = round(random.uniform(0, 10.0))
away_goals = round(random.uniform(0.1, 10.0))
return home_goals, away_goals
@staticmethod
def determineWinner(home_goals, away_goals):
if not home_goals or not away_goals:
print("Teams must play game first!")
return None
if home_goals > away_goals:
winner = ("home")
elif home_goals == away_goals:
winner = ("draw")
else:
winner = ("away")
print(winner)
return winner
two_obj = Two()
home, away = two_obj.playGame()
game1 = two_obj.determineWinner(home, away)
Точка класса по сути исключается как объект для хранения двух функций. Но в контексте вашего вопроса вы должны обратиться к экземпляру two_obj
, чтобы вызвать эти методы.
В примере Би Рико функции находятся в области GLOBAL. В приведенных выше примерах методы (как функция в классе) находятся в рамках класса.
Можно ссылаться на статические методы без инстанцирования класса Two()
:
home, away = Two.playGame()
game1 = Two.determineWinner(home, away)
все должно быть отступ один раз после того, как класса я сделал ошибку при вводе здесь. – Bob457678y
Теперь отступы выглядят правильно? – senshin
В python, если вы хотите вернуть две вещи, вы используете 'return a, b' не два оператора return. –