Как получить переменную из функции в Python - PullRequest
0 голосов
/ 02 октября 2018
def checkQuota(candidateX_Votes, candidateX_Won):
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)

    if candidateX_Votes < quota:
        candidateX_Won = False
        return candidateX_Won

    elif candidateX_Votes >= quota:
        candidateX_Won = True
        return candidateX_Won

Цель состоит в том, чтобы в качестве переменной, введенной в функцию, было установлено значение true или false, например, если я сделаю checkQuota(candidateA_Votes, candidateA_Won), я смогу позже использовать candidateA_Won, гдеему присваивается значение true или false.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

ваша переменная candidateX_Won является локальной в области действия функции.Когда вы присваиваете True или False, вы изменяете локальную переменную вместо исходной.Чтобы получить желаемый результат, вы можете использовать этот пример:

def checkQuota(candidate_x_votes):
    # here you calculate/get validVotesCast and seatsAvaliable
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)
    return not (candidate_x_votes < quota)  # this will return True or False

# and after that you can use your function
candidateX_Votes = 12 # for example 
candidateX_Won = checkQuota(candidateX_Votes)
0 голосов
/ 02 октября 2018

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

def checkQuota(candidateX_Votes): # Get rid of the parameter
    quota = int((validVotesCast / (seatsAvaliable + 1)) + 1)

    if candidateX_Votes < quota:
        candidateX_Won = False
        return candidateX_Won

    elif candidateX_Votes >= quota:
        candidateX_Won = True
        return candidateX_Won

Затем вы можете использовать функцию следующим образом:

candidateX_Won = checkQuota(candidateX_Votes) # Without having to pass in a variable

Фактически вы можете даже упростить приведенную выше функцию до:

def checkQuota(candidateX_Votes):
    return not (candidateX_Votes < int((validVotesCast / (seatsAvaliable + 1)) + 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...