2016-06-10 59 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用户的响应,或者如果响应是试验次数

后不一致抛出一个错误