【问题标题】:Write a function that takes as input a 2D array and RETURNS 'Square' , 'Rectangular' or 'Invalid'编写一个函数,将 2D 数组作为输入并返回 'Square' 、 'Rectangular' 或 'Invalid'
【发布时间】:2019-10-08 14:04:01
【问题描述】:

编写一个函数 describe(matrix),将 2D 数组作为输入,如果矩阵是正方形,则返回“Square”,如果矩阵是矩形,则返回“Rectangular”,如果两者都不是,则返回“Invalid”。 方阵具有相同的行数和列数。 矩形矩阵可以有不同的行数和列数,但每一行的长度相同。 无效矩阵的行长度不一致。 现在所有的方阵也是矩形,所以我知道这应该是一个子集。

我基本上可以判断我的矩阵是正方形还是无效。我的代码也为矩形返回“无效”。我不知道如何定义列以及如何计算某个东西是正方形还是矩形。

def describe(matrix):
        if all([len(i)==len(matrix) for i in matrix]):
            return "Square"
        else:
            return "Invalid"
>>> describe([[0]])  
'Square'  
>>> describe([[0, 1, 2], [2, 1, 0], [3, 3, 3]])  
'Square'  
>>> describe([[0, 1, 2], [2, 1], [3, 3, 3]])  
'Invalid'  
>>> describe([[0, 1], [1, 0], [3, 3]])  
'Rectangular'  
>>> describe([[0, 1], [1, 0], [3, 3]])  
'Rectangular'  
>>> describe([[0, 1, 2, 3, 4, 5]])  
'Rectangular'  
>>> describe([[0, 1, 2, 3, 4, 5], [5, 4, 3, 2, 1, 0]])  
'Rectangular'  

【问题讨论】:

  • 先判断矩阵是否为矩形,再判断是否为正方形
  • 如果您知道 tryexcept 构造,您可以事先检查您的 matrix 是否为 2D:try: matrix[0][0]except TypeError: return "Invalid"

标签: python


【解决方案1】:

你应该扭转你的想法。您应该将除第一行之外的所有行的长度与第一行的长度进行比较,而不是将每行的长度与行数进行比较。如果全部匹配,那么您至少有一个 Rectangle else Invalid。而且,如果第一行的长度(这里是其他行的长度)等于行数,那么你就有了一个 Square。

请注意极端情况(空数组和单行)...

python 代码留作练习:-)

【讨论】:

    【解决方案2】:

    你可以试试这个代码

    def describe(tmp):
        lengths = [len(item) for item in tmp]
    
        if len(set(lengths)) > 1: 
            return 'Invalid'
        else:
            if len(lengths) == lengths[0]:
                return 'Squrare'
            else:
                return 'Rectangular'  
    

    【讨论】:

      【解决方案3】:

      以下代码可能会有所帮助:

      def describe(matrix):
          if all([len(i)==len(matrix) for i in matrix]):
              return "Square"
          elif len(matrix)!=len(matrix[0]) and all([len(i)==len(matrix[0]) for i in matrix]):
              return "Rectangle"
          else:
              return "Invalid"
      

      【讨论】:

        【解决方案4】:

        您可以先检查所有行的长度是否相同,然后确定是正方形还是矩形。

        def describe(matrix):
            len_row = len(matrix[0])
            if all([len(i) == len_row for i in matrix]):
               if all([len(i)==len(matrix) for i in matrix]):
                  return "Square"
               else:
                  return "Rectangle"
            else:
                return "Invalid"
        

        【讨论】:

          猜你喜欢
          • 2019-10-18
          • 1970-01-01
          • 2013-03-21
          • 2020-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多