2016-03-28 82 views
1

我花了近幾個小時在網上閱讀,看着Python在線手冊(目前使用Python v2.7),但我仍然在努力瞭解如何從一個函數傳遞變量到另一個。Python和變量傳遞

目前,我剛剛開始了一些簡單的事情,讓我的頭繞過傳遞變量。我有3個函數(其中一個將顯示hello消息),另一個將要求用戶輸入,第三個函數將接受用戶輸入並執行計算)。

對於我的生活,我不知道如何獲得用戶輸入值的計算功能。我認爲一旦我在用戶輸入中輸入了值,我就可以將它們發送給calc函數。但我不能.......我不斷收到一條錯誤消息: 計算值=計算(NUM1,NUM2) NameError:不定義

全局命名「NUM1」

有人能指出我要去的地方錯了?這讓我瘋狂!

def main(): 
    message() 
    input = user() 
    calc = cal(num1, num2) 

def message(): 
    print "Welcome message" 

def user(): 
    side_a = int(raw_input("Enter a: ")) 
    side_b = int(raw_input("Enter b: ")) 
    return side_a, side_b 

def cal(num1, num2): 
    side_c = side_a + side_b 
    return side_c 
+1

您發送的功能NUM1和NUM2沒有界定什麼NUM1和NUM2是。在調用cal(num1,num2) – Keatinge

回答

1

因此認爲它是這樣的:

你有一個函數(DEF用戶()),這將返回兩個值。你必須得到這兩個值並將它們存儲在某個地方。在你的main()中你使用了變量「input」,它現在必須保存兩個寫入值。如果你這樣做:

print input 

你會得到(A方的價值,B方的價值)傳回給你。如果你不是寫

print input[0] 

這將只打印A面更容易(在我心中)將有兩個變量站在接收返回的值:在您的高清CAL

input1, input2 = user() 

現在(num1,num2)期望接收兩個參數並返回一個值。所以,你的主要應該是這樣的:

def main() 
    message() 
    input = user() 
    calc = cal(input[0], input[1]) 

當你定義你的功能,你可以使用(NUM1,NUM2)變量是你將如何來表示該功能的輸入。如果你只傳遞參數num1,num2,它們沒有值,因爲它們沒有在main中聲明。名稱不必匹配,你只需要傳遞正確的參數(和類型)。

因此,例如:

def sample(int1, int2, string): 
    number3 = number1 + number2 
    print(string1 + str(number3)) 

你可以通過這個原始數據,或者將它傳遞變量。在此示例中主,打印輸出將是相同的:

def main(): 
    number1 = 2 
    number2 = 2 
    string1 = "two plus two equals: " 
    sample(2,2,"two plus two equals: ") 
    sample(number1,number2,string1) 
1

改變什麼,你必須

def main(): 
    message() 
    num1, num2 = user() # grab the numbers from user fn and store them in num1, num2 
    calc = cal(num1, num2) 

def message(): 
    print "Welcome message" 

def user(): 
    side_a = int(raw_input("Enter a: ")) 
    side_b = int(raw_input("Enter b: ")) 
    return side_a, side_b 

def cal(side_a, side_b): 
    side_c = side_a + side_b 
    return side_c 
+1

之前,您需要有num1 =某個數字和num2 =某個數字,您需要更改cal()中的變量名稱。你正在使用在user()中聲明的名字。 – Tom

+0

謝謝Tom和rmunn,解決了這個問題。對不起剛剛複製粘貼代碼,並基於此。 – Bahrom