2017-05-16 132 views
1

我試圖尋找並試圖爲別人,而是提出建議的人沒有工作對我來說,這裏是我的代碼:其他功能導入變量

def CreateAccount(): 
    FirstName = input('What is your first name?: ') 
    SecondName = input('What is your second name?: ') 
    Age = input('How old are you?: ') 
    AreaLive = input("What area do you live in?: ") 
    return FirstName, SecondName, Age, AreaLive 

def DisplayAccountInfo(FirstName,SecondName,Age,AreaLive): 
    print("Your Firstname is",FirstName) 
    print("Your Secondname is",SecondName) 
    print("You are",Age," years old") 
    print("You live in the",AreaLive," area") 
    return 




def ConfirmAccountF(): 
    ConfirmAccount = input("Do you have an account? y,n; ") 
    if ConfirmAccount == "n": 
     CreateAccount() 

    else: #ConfirmAccount -- 'y' 
     DisplayAccountInfo() 

while True: 

    ConfirmAccountF() 

所以它只是應該無限期現在運行,但我想要它做的是將'CreateAccount'的變量傳遞給'DisplayAccountInfo'。

當我按'除了n for'ConfirmAccount'我得到的變量是未定義的。

如果我在「DisplayAccountInfo()」手動設置它,然後它不會引發任何錯誤。

這只是我折騰了,並試圖瞭解蟒蛇,如果有人能幫助這將是巨大的。

+0

'createAccount'正在返回變量,但您並未將它們分配給任何內容。做一些類似'data = CreateAccount()'的事情,然後在'DisplayAccountInfo()'函數中傳遞'* data' –

+1

你想要在DisplayAccountInfo()中顯示哪些帳戶信息?如果用戶輸入'y',你怎麼知道哪個帳戶要顯示信息? – Cleared

回答

0

使用unpacking operator, *

DisplayAccountInfo(*CreateAccount())

這樣做是需要由CreateAccount返回四根弦元組,並把它們轉換成作爲單獨的參數DisplayAccountInfo傳遞四個參數。然而,如果你省略了*操作,只是叫DisplayAccountInfo(CreateAccount()),這將傳遞一個元組參數DisplayAccountInfo,導致TypeError異常(因爲DisplayAccountInfo預計四個參數,而不是一個)。

當然,如果您還需要保存從CreateAccount以備後用返回的字符串,你需要做的是,在調用CreateAccountDisplayAccountInfo之間。

0

您在CreateAccount()上聲明的變量不能由外部名稱來表示。要將信息傳遞給另一個函數,您需要首先存儲其值:

first_name, second_name, age, area = "", "", "", "" 

def ConfirmAccountF(): 
    ConfirmAccount = input("Do you have an account? y,n; ") 
    if ConfirmAccount == "n": 
     first_name, second_name, age, area = CreateAccount() 

    else: #ConfirmAccount -- 'y' 
     DisplayAccountInfo(first_name, second_name, age, area) 
+0

另外,我的代碼是不是最好的,但我覺得是很容易理解,而不蟒蛇的進一步認識 – VMRuiz