【问题标题】:Python: turn java for loop to pythonPython:将java for循环转换为python
【发布时间】:2020-12-31 10:09:43
【问题描述】:

*如何在 python 中进行流式处理:我有兴趣在 java 中为 python 执行下面的代码……如何在 python 中执行这样的 for 循环……谢谢 Java解决方案就是这样并且有效:

   for (int=1;i<arr.length;i+=2{
       if(i==arr.length-1){
          if(arr[i]-min>=k)
            return count+1;
          else
            return arr.length;
        }
        else{
         if (arr[i]-min>=k)||(arr[i+1]-min>=k{
          return count+1;
          }
          else
           count++;
           }
          }
        return arr.length;
        } 
    }

    


Python solution is like that and does not work, because ifs and else... 
any ideas, how to do those if else elif..I am a bit confused as there is no {}
 
def maxMin(k, arr):
  count=1
  min = arr[0]
  print (min)

for i in range (1, len(arr), 2):
  if i==len(arr)-1:
    if arr[i]-min>=k:
        return count
    else:
        return  len(arr)   
    if (arr[i]-min>=k) or (arr[i+1]-min>=k):
        return count+1
    else:
        return count
    return len(arr)

【问题讨论】:

  • for i in range (1, len(arr), 2):
  • 谢谢,似乎工作正常,但现在在代码的其他地方被阻止了,见上文..

标签: java python loops for-loop range


【解决方案1】:

现在可以了,谢谢你,frederic,结束代码是:

def minimum_points(k, arr):
    count = 1
    min = arr[0]
    print(min)
    arrlen = len(arr)
    for i in range(1, arrlen, 2):
        if i == arrlen - 1:
            if arr[i] - min >= k:
                 return count + 1
            else:
                arrlen
        else:
            if (arr[i] - min >= k) or (arr[i + 1] - min >= k):
                return count + 1
            else:
                count += 1
    return arrlen

它的作用是: minimum_points(12, [1, 2, 3, 5, 8, 13, 14, 15, 18]) == 4

【讨论】:

    【解决方案2】:

    好的,一开始我误解了你的代码。 我在 python 中重新实现了你的 java 代码:

    def maxMin(k, min):
        count = 1
        min = arr[0]
        print(min)
        arrlen = len(arr)
        for i in range(1, arrlen, 2):
            if i == arrlen - 1:
                if arr[i] - min >= k:
                    return count + 1
                else:
                    return arrlen
            else:
                if (arr[i] - min >= k) or (arr[i + 1] - min >= k):
                    return count + 1
                else:
                    count += 1
        return arrlen
    

    if-elif-else 在 python 中的语法是:

    if condition:
        ...
    elif condition2:
        ...
    else:
        ...
    

    而且你的java代码的语法也错了,我给你修好了:

    
        for (i = 1; i < arr.length; i += 2) {
            if (i == arr.length - 1) {
                if (arr[i] - min >= k) {
                    return count + 1;
                } else {
                    return arr.length;
                }
            } else {
                if (arr[i] - min >= k) || (arr[i + 1] - min >= k) {
                    return count+1;
                } else {
                    count++;
                }
            }
        }
        return arr.length;
    

    我虽然不能保证代码做你想要的,因为你的原始代码有点乱;)

    【讨论】:

    • Pas de problème, et bien d'entendre qu'il fonctionne !
    • 谢谢,je ne sais pas pour quelle raison mon comment avand est disparu mais cest marche bien
    【解决方案3】:

    对于您的第二个错误:elif 相当于 Python 中的 else if。
    最重要的是,如果没有 if 之前,您将无法使用 else if。
    您还必须知道,永远不会到达第一个 else 语句之后的所有代码。如果您的第一个 if 不满意,它将始终进入您的 else 并且您在那里返回,因此它将停止您的循环。
    一个典型的结构是:if elif else

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多