2015-10-18 6 views
0

Я вернул переменную, и я все еще получаю, что переменная по-прежнему не определена. Может кто-нибудь помочь?Использование переменной в функции в другой функции в python

def vote_percentage(s): 
    '''(string) = (float) 
    count the number of substrings 'yes' in 
    the string results and the number of substrings 'no' in the string 
    results, and it should return the percentage of "yes" 
    Precondition: String only contains yes, no, and abstained''' 
    s = s.lower() 
    s = s.strip() 
    yes = int(s.count("yes")) 
    no = int(s.count("no")) 
    percentage = yes/(no + yes) 
    return percentage 

def vote(s): 
    ##Calling function 
    vote_percentage(s) 
    if percentage == 1.0: ##problem runs here 
     print("The proposal passes unanimously.") 
    elif percentage >= (2/3) and percentage < 1.0: 
     print("The proposal passes with super majority.") 
    elif percentage < (2/3) and percentage >= .5: 
     print("The proposal passes with simple majority.") 
    else: 
     print("The proposal fails.") 
+0

Назначить возвращаемое значение переменной: 'percent = vote_percentage (s)' – falsetru

ответ

0

Основываясь на том, как вы реализуете свой код, если вы определяете переменную в одном методе, вы не можете получить доступ к нему в другой.

Процентная переменная внутри vote_percentage только в пределах метода vote_percentage, что означает, что он не может использоваться вне этого метода, как вы пытаетесь его использовать.

Итак, в вашем элементе vote_percentage вы возвращаете процент. Это означает, что когда вы вызываете этот метод, вам нужно фактически присвоить его результат переменной.

Итак, чтобы показать вам пример использования вашего кода.

Глядя на ваш код здесь:

def vote(s): 
    ##Calling function 
    vote_percentage(s) 

Что нужно делать при вызове vote_percentage фактически сохранить возвращаемое значение, так что вы можете сделать что-то вроде этого:

percentage = vote_percentage(s) 

сейчас , на самом деле у вас есть возврат vot_percentage в переменном проценте.

Вот еще один небольшой пример для дальнейшего объяснения обзорного для вас:

Если вы сделаете это:

def foo() 
    x = "hello" 

Если вы находитесь за пределами метода Foo(), вы не можете получить доступ к переменной х. Он находится в пределах «объема» только foo. Так что, если вы сделаете это:

def foo(): 
    x = "hello" 
    return x 

И у вас есть еще один метод, который должен результат Foo(), вы не имеете доступ к этому «х», так что вам нужно хранить, что возвращение в переменном, как это :

def boo(): 
    x = foo() 

Как вы можете увидеть в моем примере, похожий на ваш код, я даже использовал переменные й в Boo(), потому что это «другой» х. Это не входит в ту же область, что и foo().

+0

Спасибо. Это поставило проблему. – Stephanie

+0

@Stephanie Добро пожаловать. Вы должны принять ответ, чтобы помочь следующему человеку с аналогичными проблемами – idjaw

Смежные вопросы