在Python中返回一个布尔值而不是包含True或False的字符串

时间:2013-08-15 15:32:53

标签: python python-2.7 boolean

TrueFalse布尔值存在小问题。

我定义了一个过程weekend,它接受​​一个字符串作为输入,否则返回布尔True if 'Saturday' or 'Sunday'False

这是我的weekend功能:

def weekend(day):
    if day == 'Saturday' or day == 'Sunday':
        return "True"
    else:
        return "False"

这是我的输出:

>>>print weekend('Monday')
False
>>>print weekend('Saturday')
True
>>>print weekend('July')
False

但正如您在我的代码中所看到的,我正在返回字符串但我想返回布尔 True or False

我该怎么做?

感谢。

5 个答案:

答案 0 :(得分:6)

试试这个:

def weekend(day):
    if day == 'Saturday' or day == 'Sunday':
        return True
    else:
        return False

或者这个:

def weekend(day):
    return day == 'Saturday' or day == 'Sunday'

甚至更简单:

def weekend(day):
    return day in ('Saturday', 'Sunday')

无论如何:在Python中,布尔值为TrueFalse,没有引号 - 但也知道存在多个 falsy 值 - 也就是说,行为准确的值如果在条件中使用False。例如:""[]None{}0()

答案 1 :(得分:2)

这是编写函数并输出布尔值

的最短方法
def weekend(day):
    return day == 'Saturday' or day == 'Sunday'

def weekend(day):
    return day in ('Saturday', 'Sunday')

答案 2 :(得分:1)

您的问题是在"周围使用True标记,删除它们会有效。以下是编写此方法的更多pythonic方法:

def weekend(day):
    if day.lower() in ('saturday', 'sunday'):
        return True
    else:
        return False

检查时使用.lower()是忽略大小写的好方法。您还可以使用in语句查看字符串是否在字符串列表中找到

这是一个超短路

def weekend(day):
  return day.lower() in ('saturday', 'sunday')

答案 3 :(得分:0)

def weekend(day):
    if day == 'Saturday' or day == 'Sunday':
        return True
    else:
        return False

你正在回归" True"并返回"错误"这使它成为一个字符串而不是布尔

答案 4 :(得分:0)

如果你想返回一个布尔值而不是一个字符串,只需删除True和False周围的引号''

试试这个:

def weekend(day):
    """ Return True if day is Saturday or Sunday otherwise False."""

    return day in ('saturday', 'sunday'):

或正如我之前的其他人所说:

def weekend(day):
    """ Return True if day is Saturday or Sunday otherwise False."""

    return day == 'Saturday' or day == 'Sunday'