Возможно ли иметь несколько условий в функции, которая включает для l oop в Python? - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в программировании с 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% из действия по обслуживанию. Важно, чтобы был достигнут первый порог (потому что этот элемент должен быть заменен ) до того, как второй «заработает» (элементы, которые я хочу включить ). Я надеюсь, что кто-то может мне помочь.

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Самый простой способ - это немедленно вызвать ремонт и вообще не использовать флаг:

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

Или, если вы не можете этого сделать, вы можете составить список предметов, которые будут восстановлен в первом l oop, а затем обработать этот список:

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()
0 голосов
/ 28 апреля 2020

Если do_repair установлено в True в for l oop, когда условие выполнено, все переменные восстанавливаются во втором l oop. Чтобы предотвратить это, вы должны отремонтировать предметы, которые соответствуют условию в первом l oop. Поэтому я думаю, что нет необходимости использовать переменную do_repair и в этом случае второе значение for l oop.

def maintenance_action(self):
    for i in item:
        if i.condition[-1] <= 10:
            i.repair()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...