我想找到一个字符串(蓝色或红色)并将其转换为数字(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)
答案 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
子句将被忽略。
无任何回报->输出:无
是的。如果您的函数没有True
或if
任何东西,它将返回return
。
在每种情况下,您都需要仔细定义所需的输出。例如,如果要将值列表作为输出,请初始化yield
并将其追加。字典将使您的解决方案最容易实现和扩展。
这是一个演示:
None