【问题标题】:Is it possible to have multiple conditions in a function which includes a for loop in Python?在 Python 中包含 for 循环的函数中是否可以有多个条件?
【发布时间】:2020-04-28 14:00:06
【问题描述】:

我是使用 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% 的项目排除在维护操作之外。重要的是,在第二个阈值(我想要包含的项目)之前满足第一个阈值(因为这个项目必须被替换)。我希望有一个人可以帮助我。

谢谢!

【问题讨论】:

    标签: python function for-loop if-statement


    【解决方案1】:

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

    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()
    

    【讨论】:

    • 感谢您的意见,对我帮助很大!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 1970-01-01
      • 2018-01-31
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      相关资源
      最近更新 更多