首页 > 解决方案 > for循环中有两个if语句?

问题描述

class Solution:
    def transformArray(self, arr: List[int]) -> List[int]:
        x=arr
        while True:
            f=True
            for i in range(1,len(arr)-1):
                if arr[i-1]<arr[i] and arr[i]>arr[i+1]:
                    f=False
                    x[i]=x[i]-1
                    print(x[i])
                if arr[i-1]>arr[i] and arr[i]<arr[i+1]:
                    f=False
                    x[i]=x[i]+1
                    print(x[i])
                
            #print(x)
            x=arr
            if f==True:
                break
        return x

在上面的代码中,两个 if 语句都不会执行,只有第二个会执行。我尝试过使用 elif 但它仍然不起作用。我在这里想念什么?

标签: arrayspython-3.xif-statement

解决方案


对于您的代码,我考虑了两种类型的示例作为数组列表的输入

例如 1,当 arr = [1, 2, 1, 4] 时,第 2 个元素大于第 1 个和第 3 个元素

第一个 if 语句(如果 arr[i-1]<arr[i] 和 arr[i]>arr[i+1]:) 正在工作,因为两个条件都满足并且它给出了输出 x = [1, 1、1、4]

在示例 2中,当 arr = [3, 2, 3, 4] 时,第 2 个元素小于第 1 个和第 3 个元素

第二个 if 语句(如果 arr[i-1]>arr[i] 和 arr[i]<arr[i+1]:) 正在工作,因为两个条件都满足并且它给出了输出 x = [3, 3、3、4]

因此,if 语句的工作很大程度上取决于数组中的元素。这两个 if 语句的目的是完全相反的。如果一个满足条件,另一个则不满足。

希望我的回答能提供一些澄清。


推荐阅读