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的返回值?
答案 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。因此,如果此代码是网站项目等的一部分,则不应使用此代码。除此之外,我觉得很酷。