2015-10-15 35 views
1

我有一個函數需要傳入一個參數(whateverName(n))。我想檢查參數是否確實通過了,如果不是,我想顯示一個提示詢問期望的參數應該是什麼(n = int(raw_input(...)))。任何想法如何做到這一點(注:我是Python的新手)?檢查是否需要變量已通過

+1

如果您需要的參數,在那裏,就是不給它一個默認值。 –

+2

如果你的函數需要一個參數並且它沒有提供,你的程序將會崩潰,類型錯誤:<函數名>只接受1個參數(0給定)',或者在3.X類型錯誤中:<函數名>缺少1個需要的位置參數:'<變量名>''。它們已經足夠描述了 - 不需要做任何特別的改變。 – Kevin

+0

我知道它會崩潰,我想通過顯示提示詢問變量是什麼來阻止它。 –

回答

4

n默認值None,並在函數體中檢查它。

>>> def frob(n=None): 
...  if n is None: 
...    n = int(raw_input("Please enter a value:")) 
...  return n**2 + n 
... 
>>> frob(23) 
552 
>>> frob() 
Please enter a value:42 
1806 

當然,這意味着用戶將無法撥打frob(None)即使他確信這就是他想要n具有價值。但在這種特殊情況下,frob無論如何都只能成功處理整數,因此用戶無需再調用frob(None)

+0

這是我需要的,謝謝! –

+0

您可以使用用戶不可能需要提供的自定義標記作爲輸入:'sentinel = object(); def(n = sentinel):如果n是哨兵:......' – chepner

+0

@chepner,是的,這絕對是一種有效的方法。如果用戶處於正確的範圍內,他仍然可以做'frob(sentinel)',但是他真的只是在尋求麻煩。 – Kevin

0

嘗試:

def whatever(n=None): 
    if n is None: 
     n = input("Enter n:") 
    print(n)