一切都适用于这个:
if propRiskElem.text == 'High Risk Zone A':
propRiskElem.text = """<CLR red = "255" green = "0" blue = "0">High Risk Zone A</CLR>"""
elif propRiskElem.text == 'High Risk Zone AE':
propRiskElem.text = """<CLR red = "255" green = "0" blue = "0">High Risk Zone AE</CLR>"""
elif propRiskElem.text == 'Low Risk':
propRiskElem.text = """<CLR red = "0" green = "128" blue = "0">Low Risk</CLR>"""
else:
propRiskElem.text = """<CLR red = "255" green = "165" blue = "0">Moderate Risk</CLR>"""
arcpy.RefreshActiveView()
但是对于这个版本,前两个ifs中的所有内容都被推送到了else:
if propRiskElem.text == 'High Risk Zone A':
propRiskElem.text = """<CLR red = "255" green = "0" blue = "0">High Risk Zone A</CLR>"""
if propRiskElem.text == 'High Risk Zone AE':
propRiskElem.text = """<CLR red = "255" green = "0" blue = "0">High Risk Zone AE</CLR>"""
if propRiskElem.text == 'Low Risk':
propRiskElem.text = """<CLR red = "0" green = "128" blue = "0">Low Risk</CLR>"""
else:
propRiskElem.text = """<CLR red = "255" green = "165" blue = "0">Moderate Risk</CLR>"""
arcpy.RefreshActiveView()
对我有点刺激,但至少第一个有效。我试图理解为什么有时候我需要使用elif,有时我不会。谢谢。
答案 0 :(得分:0)
在您的第二个代码块中,如果{且仅当{}} else
为propRiskElem.text == 'Low Risk'
,则始终会触发False
,这就是原因。
如果您的所有else
和if
都是elif
False
会被触发
答案 1 :(得分:0)
在你的第二个例子中(没有elif)所有3个if条件将一直被检查,而else只与最后一个if相关联。 如果前2个检查中的任何一个匹配,那么第3个肯定会失败并且将采取其他行动。
答案 2 :(得分:0)
你的第二个代码显然不起作用,因为
如果:
'做什么'
如果:
'做什么'
如果:
'做什么'
否则:
'做别的事'
请注意,如果你的if语句为false,它甚至不会进入下一组if语句,只是直接命中else语句。
另一方面
如果:
'do-something'
的elif:
'do-something'
否则:
'do something else'
如果你的if出错了,接下来会检查if-else并尝试检查是否必须验证,如果错误的话最终会转到其他地方。
答案 3 :(得分:0)
使用这样的字典:
risks = {'High Risk Zone A': """<CLR red = "255" green = "0" blue = "0">High Risk Zone A</CLR>""",
'High Risk Zone AE': """<CLR red = "255" green = "0" blue = "0">High Risk Zone AE</CLR>""",
'Low Risk': """<CLR red = "0" green = "128" blue = "0">Low Risk</CLR>""" }
此功能从dict
def transform_text(text):
return risks.get(text,"""<CLR red = "255" green = "165" blue = "0">Moderate Risk</CLR>""")
像这样调用函数:
propRiskElem.text = transform_text(propRiskElem.text)