同级if判断满足条件后如何跳过同级if判断
时间: 2023-09-12 07:06:44 浏览: 106
在同级 if 判断中,如果条件满足后,你可以 `break` 语句来跳出当前的 判断。这样可以终止当前循环或块的执行,并继续执行后面的代码下面是一个示例:
```python
for i in range(5):
if i == 2:
break print(i)
```
上述代码中, `i` 的值为 2 时,足条件,会执行 `break` 语句,跳出当前的 for 循环。因此,输出结果为:
```
0
1
```
请注意,`break` 只能用于循环语句(如 for 循环、while 循环),不能直接用于 if 判断语句。如果你想要跳出多个嵌套的 if 判断,可以考虑使用函数或控制语句来实现。
相关问题
根据代码“@Data public class DesignDictDataOnlineVO { @ApiModelProperty(value = "元素分类编码") private String code; @ApiModelProperty(value = "元素分类名称") private String name; @ApiModelProperty(value = "元素分类定义") private String definition; @ApiModelProperty(value = "父级分类ID") private String parentId; @ApiModelProperty(value = "同级/下级元素分类") private String level; @ApiModelProperty(value = "是否抽象(Y:是;N:不是)") private String virtually; }”,补全下面代码,根据已有的元素分类列表新增同级或子级的一条元素:“@Autowired public List<StandardElementClassTreeVO> addOnlineElement(DesignDictDataOnlineVO vo) { }” 要求:1.填写元素分类编码(code), 填写元素分类名称(name), 2.根据parentId(新增同级取选择分类的parentId,新增子级取选择分类的ID作为parentId) 是否抽象(virtually)2.用判断语句对填写的code和name进行重名校验。校验code长度≤50、name长度≤50、definition≤200。 校验填写的code不能有中文。校验填写virtually只能用Y或者N。如果都满足条件则添新增的这一条元素。
```
@Autowired
public List<StandardElementClassTreeVO> addOnlineElement(DesignDictDataOnlineVO vo) {
String code = vo.getCode();
String name = vo.getName();
String definition = vo.getDefinition();
String parentId = vo.getParentId();
String level = vo.getLevel();
String virtually = vo.getVirtually();
// 校验code和name是否重名
List<DesignDictDataOnlineVO> elementList = getElementList();
for (DesignDictDataOnlineVO element : elementList) {
if (element.getCode().equals(code)) {
throw new RuntimeException("元素分类编码已存在!");
}
if (element.getName().equals(name)) {
throw new RuntimeException("元素分类名称已存在!");
}
}
// 校验code不能有中文
if (code.matches(".*[\\u4e00-\\u9fa5]+.*")) {
throw new RuntimeException("元素分类编码不能包含中文!");
}
// 校验code长度≤50、name长度≤50、definition≤200
if (code.length() > 50 || name.length() > 50 || definition.length() > 200) {
throw new RuntimeException("元素分类编码、名称、定义长度不能超过50和200!");
}
// 校验virtually只能为Y或N
if (!virtually.equals("Y") && !virtually.equals("N")) {
throw new RuntimeException("是否抽象只能填写Y或N!");
}
// 新增元素
DesignDictDataOnlineVO newElement = new DesignDictDataOnlineVO();
newElement.setCode(code);
newElement.setName(name);
newElement.setDefinition(definition);
newElement.setParentId(parentId);
newElement.setLevel(level);
newElement.setVirtually(virtually);
elementList.add(newElement);
saveElementList(elementList);
// 返回新增后的元素列表
return generateElementTree();
}
```
for node in root.iter(): # 如果节点不是顶层节点 if node != root: # 判断节点是否被包含 found = False prev_node = node.getprevious() while prev_node is not None: if isinstance(prev_node, ET.Comment) and re.search(r"XX_HLR_NUM", prev_node.text) and re.search(r"END", prev_node.tail): found = True break prev_node = prev_node.getprevious() if not found: # 输出行号 line_number = xml_string[:node.sourceline].count("\n") + 1 print("节点 %s 没有被包含,行号为 %d" % (node.tag, line_number)) 代码报错AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getprevious'
这个错误通常是因为当前节点在其父元素中是第一个节点,没有前一个节点,因此没有getprevious()方法。你可以在调用getprevious()方法前,先判断一下该节点是否有前一个节点。可以使用Element.getparent().findall()方法获取所有同级节点,然后判断当前节点是否是第一个节点,如果是,则不要调用getprevious()方法。
你可以修改代码如下:
```
for node in root.iter():
# 如果节点不是顶层节点
if node != root:
# 判断节点是否被包含
found = False
prev_node = None
siblings = node.getparent().findall(node.tag)
if len(siblings) > 1:
index = siblings.index(node)
prev_node = siblings[index-1]
while prev_node is not None:
if isinstance(prev_node, ET.Comment) and re.search(r"XX_HLR_NUM", prev_node.text) and re.search(r"END", prev_node.tail):
found = True
break
siblings = prev_node.getparent().findall(prev_node.tag)
if len(siblings) > 1:
index = siblings.index(prev_node)
prev_node = siblings[index-1]
else:
prev_node = None
if not found:
# 输出行号
line_number = xml_string[:node.sourceline].count("\n") + 1
print("节点 %s 没有被包含,行号为 %d" % (node.tag, line_number))
```
在这个修改后的代码中,我们首先使用node.getparent().findall(node.tag)方法获取所有同级节点,然后判断当前节点是否是第一个节点。如果不是第一个节点,则获取前一个节点。如果前一个节点是注释节点,并且满足条件,则将found标志设置为True。如果前一个节点不是注释节点,则继续查找前一个节点,直到找到符合条件的注释节点或者没有前一个节点为止。
阅读全文