2015-06-03 57 views
-1

我正在製作一個遊戲,其中有用戶可以選擇的選擇,我想創建一個函數來輕鬆打印問題,但不是每個問題都會有5個答案。我怎樣才能做到這一點,所以它只會打印那些有參數的。我嘗試了下面的內容,但不起作用。即使未定義其參數,如何使功能繼續

def sceneQuestion(question, Aone, Atwo, Athree, Afour, Afive): 
    print(question) 
    global choice 
    choice="?" 
    print(' ') 
    print(" <a> "+Aone) 
    print(" <b> "+Atwo) 
    try: 
     Athree 
    except NameError: 
     print(' ') 
    else: 
     print (' <c> '+Athree) 
    try: 
     Afour 
    except NameError: 
    print(' ') 
    else: 
     print (' <d> '+Afour) 
    try: 
    Afive 
    except NameError: 
    print(' ') 
    else: 
    print (' <e> '+Afive) 
sceneQuestion('What do you want to do?', 'Eat food', 'Save George', 'Call George an idiot') 

我該怎麼做,謝謝。

請評論,如果您有任何疑問

+0

爲參數給出一個默認值 - 可能是None值。而不是嘗試 - 除了使用if-else來查看參數的值並據此進行操作。 – Aditya

+0

不要混淆_「未定義的_和_」定義爲「無」的值_「_ – Eric

回答

1

爲了完整起見,這裏是你會怎麼做,如果這個問題沒有更適合通過*args,在亞當的回答是:

def sceneQuestion(question, Aone, Atwo, Athree=None, Afour=None, Afive=None): 
    print(question) 
    global choice 
    choice="?" 
    print(' ') 
    print(" <a> "+Aone) 
    print(" <b> "+Atwo) 
    if Athree is not None: print (' <c> '+Athree) 
    if Afour is not None: print (' <d> '+Afour) 
    if Afive is not None: print (' <e> '+Afive) 

默認參數的值可以在功能設置簽名,然後在您的代碼中檢查None的值

3

這是當你使用可選參數。在這種情況下,它應該是一系列的論點。

def question(question, *answers): 
    # answers is now a list of everything passed 
    # to the function OTHER than the first argument 
    print(question) 
    for lett, ans in zip(string.ascii_lowercase, answers): 
     print(" <{L}> {ans}".format(L=lett, ans=ans))