2016-06-10 61 views
4

我明白下面的函數的作用,但我不太清楚返回TrueFalse之間的重要性(或差異)。函數中的正確和錯誤def

這兩個子句都使程序退出;即在輸入正面或負面響應時,Python提示符會返回,那麼內部實際上會發生什麼變化?

而且,如果我設計這樣的功能我自己,我應該用TrueFalse,如果我只是想程序的提示還給我沒有實際做什麼?

def ask(prompt, retries = 4, reminder = 'Please try again!'): 
    while True: 
     response = input(prompt) 
     if response in ('y', 'yes'): 
      print('Got y or yes!') 
      return True 
     if response in ('n', 'no', 'nope'): 
      print('Got n or no or nope!') 
      return False 
     retries = retries - 1 
     if retries < 0: 
      raise ValueError('Invalid user response!') 
     print(reminder) 

ask('Do you wanna quit?') 
+1

它取決於你的應用程序,如果你需要將函數的返回傳遞給其他地方,那麼它會有所作爲,否則你可能只是使用return。 – Alessandro

+2

如果你沒有使用返回的值,你可能只使用return(沒有True或False) – 2016-06-10 11:55:25

+1

如果你想向用戶詢問其他類似的東西,我會說它有不同的返回值:「你真的想要買這個嗎? 「那麼你可以做一個'如果問('你真的想買這個?')'例如 – KRONWALLED

回答

2

函數很少單獨使用。返回TrueFalse這裏是幫助您的程序的其餘部分確定要做什麼。例如:

if ask('Do you like cheese?'): 
    order_cheese() # Some function you've previously defined 

但是,如果你的函數用於返回的提示,你可以用sys.exit()返回,調用程序(VS功能)成功代碼可以利用的。

1

由於用戶的答案可能是雙方y or nyes or noy or nopeyes or nopey or no以任何順序,功能簡單的二分法映射此列表中的一個成一個簡單的TrueFalse。因此,您可以使用該功能作爲執行操作的條件。

if ask('Are you ill?'): 
    print('Go see a physician') 
else: 
    print('Go hiking') 

無需重新評估用戶的原始詳細響應。

這與確保function的想法相當一致的只有一個功能,在這種情況下是booleanise用戶的響應,或者如果響應是試驗次數

後不一致拋出一個錯誤