Python:打印函数的返回值

时间:2015-12-25 17:40:04

标签: python python-2.7

Python 2.7。以下函数返回True或False。我正在尝试打印此结果。现在我知道我可以用“print”替换“return”,但我不想在函数内打印。

def OR_Gate():                                              
  a = raw_input("Input A:")                                        
  b = raw_input("Input B:")                                        
  if a == True or b == True:                                      
      return True                                                  
  if a == False and b == False:                                    
      return False

print OR_Gate()

当我运行下面的代码时,我被提示输入a和b的值,然后输出为“None”,而不是True或False。如何打印函数OR_Gate的返回值?

3 个答案:

答案 0 :(得分:5)

您正在将布尔字符串 True != "True"False != "False"进行比较,以便您的函数返回None,这是您默认#39; t指定返回值。您还可以使用in使用"True"简化代码:

def OR_Gate():                                              
  a = raw_input("Input A:")                                        
  b = raw_input("Input B:")                                        
  return "True" in [a,b]

答案 1 :(得分:2)

Padraic有一个很好的答案。除此之外,如果您想将原始输入与一组字符进行比较以确定真实性,您可以执行以下操作:

def OR_Gate():
    truevalues = ['true','t','yes','y','1']
    falsevalues = ['false','f','no','n','0']
    a = raw_input("Input A:")
    b = raw_input("Input B:")

    # if you want to have a one line return, you could do this
    # send back False if a and b are both false; otherwise send True
    # return False if a.lower() in falsevalues and b.lower() in falsevalues else True

    if a.lower() in truevalues or b.lower() in truevalues:
        return True
    if a.lower() in falsevalues or b.lower() in falsevalues:
        return False

print OR_Gate()

一些结果:

$ python test.py
Input A:t
Input B:t
True

$ python test.py
Input A:f
Input B:t
True

$ python test.py
Input A:f
Input B:f
False

答案 2 :(得分:-1)

我喜欢发布有趣的答案。这是一个:

def OR_Gate():                                              
  return eval(raw_input("Input A:")) or eval(raw_input("Input B:"))

但是,通过用户输入使用eval()可以直接访问python interpeter。因此,如果此代码是网站项目等的一部分,则不应使用此代码。除此之外,我觉得很酷。