当条件为false时,为什么控件会进入if条件

2024-10-01 17:33:30 发布

您现在位置:Python中文网/ 问答频道 /正文

函数查找最小消去次数,以使所有相邻元素的总和为偶数:

def min_elimination(n, arr): 
    countOdd = 0

    # Stores the new value 
    for i in range(n): 

        # Count odd numbers 
       ***if (arr[i] % 2): 
              countOdd += 1***

    # Return the minimum of even and 
    # odd count 
    return min(countOdd, n - countOdd) 

# Driver code 
if __name__ == '__main__': 
    arr = [1, 2, 3, 7, 9] 
    n = len(arr) 
    print(min_elimination(n, arr)) 

请帮助我处理if条件。当代码执行if(number%2)时,控件将进入if中,因为列表的第一个元素是奇数。if(number%2if(number%2==0)之间有什么区别吗。因为当我尝试if(number%2==0)时,控件没有进入if的内部,因为数字是奇数(检查列表的第一个元素)


Tags: the函数元素列表ifmin次数控件
3条回答

两个整数相加为偶数的唯一方法是两个整数都应该是奇数,或者两个整数都应该是偶数

所以你的问题基本上是想知道数组中是奇数较多,还是偶数较多:

def min_elimination(arr):
    return len(min([n for n in arr if n%2],[n for n in arr if not n%2],key=len))

print(min_elimination([1, 2, 3, 7, 9]))

输出:

1

我相信你的代码可以正常工作。它正确地返回实现结果所需的最小消去次数,而不是结果本身

is there any difference between if(number%2) and if(number%2==0)

是的,if number % 2与说if number % 2 == 1相同,这与说if number % 2 == 0相反。因此,从一个切换到另一个会破坏程序的逻辑

我可以将您的代码简化如下:

def min_elimination(array): 
    odd = 0

    # Stores the new value 
    for number in array: 

        # Count odd numbers 
        odd += number % 2

    return min(odd, len(array) - odd) 

min_elimination([1, 2, 3, 7, 9])返回1时,需要一(1)个消去法使所有相邻元素之和为偶数

这是上述内容的简单版本

def min_elimination(arr):
    lst1 = [n for n in arr if n%2] # List of all odd numbers
    lst2 = [n for n in arr if not n%2] # List of all even numbers
    lst = max(lst1, lst2, key=lambda x: len(x))
    return lst
print(min_elimination([1, 2, 3, 7, 9]))

相关问题 更多 >

    热门问题