微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有人可以帮我将 **for 循环** 替换为 **while 循环** 我正在努力弄清楚吗?

如何解决有人可以帮我将 **for 循环** 替换为 **while 循环** 我正在努力弄清楚吗?

有人可以帮我将 for 循环 替换为 while 循环 我正在努力弄清楚吗?

这个问题特别要求我们不要使用 for 循环。这就是为什么我需要用 while 循环

替换它

我在下面列出了:

  1. 我的代码
  2. 输入输出
  3. 的示例测试
  4. 我们必须遵守的条件:
 def matrix_equal(matrix1,matrix2):
    """
    -------------------------------------------------------
    Compares two matrices to see if they are equal - i.e. have the
    same contents in the same locations.
    Use: equal = matrix_equal(matrix1,matrix2)
    -------------------------------------------------------
    Parameters:
        matrix1 - the first matrix (2D list of ?)
        matrix2 - the second matrix (2D list of ?)
    Returns:
        equal - True if matrix1 and matrix2 are equal,False otherwise (boolean)
    ------------------------------------------------------
    """
    equal = True
    if((len(matrix1) != len(matrix2)) or (len(matrix1[0]) != len(matrix2[0]))):
        equal = False
    for x in range(len(matrix1)):
        if(equal == False):
            break
        for y in range(len(matrix1[0])):
            num1 = matrix1[x][y]
            num2 = matrix2[x][y]
            if(num1 != num2):
                equal = False
                break
    return equal

样品测试:

First matrix:
      0    1    2
 0    c    a    t
 1    d    o    g
 2    b    i    g

Second matrix:
      0    1    2
 0    c    a    t
 1    d    o    g
 2    b    i    g

Equal matrices: True

我们必须遵守的条件:

1. should not call input in the function
2. should not call print in the function
3. should not have multiple returns

解决方法

这应该可以解决您的问题,这是使用 while 循环的解决方案:

cache=True
,

改变

for x in range(len(matrix1)):

x = 0
while x < len(matrix1):
    x += 1

干杯!

,

你可以变换:

for i in range(mat.shape[0]):
  {do stuff...}

进入

i = 0
while i < mat.shape[0]:
  {do stuff...}
  # increment i with 1
  i += 1

所以在这里你会得到:

def mat_eq_while(matrix1,matrix2):
  i = 0
  j = 0
  equal = True
  if(not (mat1.shape == mat2.shape) ):
      equal = False
  while i < mat1.shape[0]:
      if(equal == False):
          break
      while j < mat1.shape[1]:
          num1 = matrix1[i,j]
          num2 = matrix2[i,j]
          if(num1 != num2):
              equal = False
              break
          j += 1
      i += 1
  return equal

测试一下

import numpy as np
mat1 = np.matrix(range(9)).reshape(3,3)
mat2 = np.matrix(range(1,10)).reshape(3,3)

print( mat_eq_while(mat1,mat1) )
print( mat_eq_while(mat1,mat2) )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。