2015-10-18 91 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

將返回值賦給一個變量:'percentage = 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) 

現在,你實際上有可變百分比的vote_percentage回報。

這裏是另外一個小例子來進一步說明作用域爲您提供:

如果你這樣做:

def foo() 
    x = "hello" 

如果你是一個方法foo()之外,你不能訪問變量x。它只在foo的「範圍」內。所以,如果你這樣做:

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

而且你需要FOO()的結果的另一種方法,你沒有訪問到「X」,所以你需要存儲在這樣一個變量,它的回報:

def boo(): 
    x = foo() 

正如你可以在我的例子中看到,類似於你的代碼,我甚至用變量x的噓聲(),因爲它是一個「不同的」×。它不在foo()的範圍內。

+0

謝謝。這解決了問題。 – Stephanie

+0

@Stephanie歡迎您。你應該接受答案,以幫助有類似問題的下一個人 – idjaw

相關問題