Python检查几个if条件(用数字查找并替换单词)

时间:2018-07-09 09:39:09

标签: python if-statement search replace return

我想找到一个字符串(蓝色或红色)并将其转换为数字(1或2)。 我的代码2中有if条件。他们两个都是对的。所以我应该将数字1和2作为输出。
但是,根据我将收益放在何处,我总是得到1或2,但永远不会同时得到1和2。我想念什么?不能同时拥有两个if条件吗?
我的输入文本看起来像这样:

myInput = "I like the colors blue and red."

def check_color(document):

    for eachColor in document:

        if ("blue" in myInput):
            color_status = "1"
            #return color_status # only 1 as result

        if ("red" in myInput):
            color_status = "2"
            #return color_status # only 1 as result
        else:
            color_status = "0"
            #return color_status # only 1 as result
    #return color_status # only 2 as result

没有任何回报->输出:无

函数调用

color_output = check_color(myInput)
print(color_output)

3 个答案:

答案 0 :(得分:2)

当然,您需要一个return语句才能获得任何结果。问题出在概念上:如果要返回零个或多个值,列表将是最简单的解决方案。 (您的代码只是将1乘以2)。

   color_status = []
   if "blue" in myInput:
        color_status.append("1")

   if "red" in myInput:
        color_status.append("2")

   return color_status

答案 1 :(得分:1)

这是一种方法。

演示:

myInput = "I like the colors blue and red."

def check_color(document):
    clr = ["blue", "red"]
    color_status = 0
    if all(i in document for i in clr):
        color_status = [1, 2]

    elif ("red" in myInput):
        color_status = 2
    elif ("blue" in myInput):
        color_status = 1

    return color_status

color_output = check_color(myInput)
print(color_output)
  • 使用all检查文本中是否所有颜色
  • elif检查其他条件。

答案 2 :(得分:1)

  

所以我应该得到数字1和2作为输出。

不。函数到达public static int CountOverlapping(this IQueryable<Table1Row> table1, DateTime startCheckDate, DateTime endCheckDate) { return table1 .Where (row => row.StartDate < startCheckDate && row.EndDate > endCheckDate) .Count(); } 语句后,将返回一个值,该函数不再执行。

  

是否不可能同时具有2个if条件?

是的。但是,如果您在DateTime startCheckDate = ... DateTime endCheckDate = ... IQueryable<Table1Row> table1 = ... int nrOfOverlapping = table1.CountOverlapping(startCheckDate, endCheckDate); 子句中放入return语句,其结果为return,则所有后续if子句将被忽略。

  

无任何回报->输出:无

是的。如果您的函数没有Trueif任何东西,它将返回return


在每种情况下,您都需要仔细定义所需的输出。例如,如果要将值列表作为输出,请初始化yield并将其追加。字典将使您的解决方案最容易实现和扩展。

这是一个演示:

None