在Python中包含for循环的函数中是否可能有多个条件



我是用Python编程的新手。目前,我正在制定一个程序/算法,根据这些物品的状况来确定维护(多个物品的组合更换(。确切地说,当一个项目的条件低于预定阈值(例如10%(时,我想替换这些项目。我的代码有一个问题,见下文,当达到这个阈值时,所有项目都会被替换。

def maintenance_action(self):
do_repair = False
for i in item:
if i.condition[-1] <= 10:
do_repair = True     
break
if do_repair:
for i in items:
i.repair()

然而,我想包括一个额外的阈值(比方说50%(,它将所有条件>50%的项目排除在维护操作之外。重要的是,在第二个阈值"生效"(我希望包括的项目(之前,满足第一个阈值(因为必须替换此项目(。我希望有人能帮助我。

谢谢!

最简单的方法是立即调用修复,而根本不使用标志:

for i in items:
if i.condition[-1] <= 10:
i.repair()

或者,如果你不能做到这一点,你可以在第一个循环中建立一个要修复的项目列表,然后稍后处理该列表:

items_to_repair = []
for i in item:
if i.condition[-1] <= 10:
items_to_repair.append(i)
# other code here
for i in items_to_repair:
i.repair()

如果条件满足时在for循环中将do_repair设置为True,则在第二个循环中修复所有变量。为了防止这种情况,您应该将满足第一个循环中条件的项目修复。所以我认为在这种情况下没有必要使用do_repair变量和第二个for循环。

def maintenance_action(self):
for i in item:
if i.condition[-1] <= 10:
i.repair()

相关内容

最新更新