没有多少人能解决的五个 Python 难题

上一篇 / 下一篇  2023-04-12 11:56:00

  这是一个挑战——尝试解决以下 5 个 Python 编程难题,不要用谷歌百度去搜索答案。
  1) 幻方
  幻方是包含数字 1 到 9 的 3x3 网格。每 3 个连续数字(行、列或对角线)必须加起来为 15。下面是一个有效的幻方示例:
  [  [2, 7, 6],
     [9, 5, 1],
     [4, 3, 8]  ]
  在这个谜题中,你得到了一个不完整的幻方。
  [  [2, 0, 0],
     [0, 0, 0],
     [0, 3, 8]  ]
  幻方不应该有 0。此处,0 表示您需要填写 1 到 9 之间的数字。
  ·1 到 9 每个数字只能出现一次
  · 3 个数字的每一行、每一列和对角线的和必须等于 15
  def solve(incomplete_square):
      # 代码放这里
  square = [  
      [2, 0, 0],
      [0, 0, 0],
      [0, 3, 8]
  ]
  solve(square)
  # [  [2, 7, 6],
  #    [9, 5, 1],
  #    [4, 3, 8]  ]
  2) 大写一个搞砸的字典
  给你一个乱七八糟的字典,里面有多个非结构化的嵌套。例如:
  d = {
      "a": {"b":"c"},
      "d": {
          "e":"f",
          "g": {
              "h":"i",
              "j":"k",
              "l":"m"
          },
          "n": {
              "o": {
                  "p": {
                      "q": {"r":"s"}
                  }
              }
          }
      }
  }
  编写一个函数,接受这个搞砸的字典,并返回这个字典的副本,其中所有键和值都转换为大写。
  d = {
      "A": {"B":"C"},
      "D": {
          "E":"F",
          "G": {
              "H":"I",
              "J":"K",
              "L":"M"
          },
          "N": {
              "O": {
                  "P": {
                      "Q": {"R":"S"}
                  }
              }
          }
      }
  }
  3) 来自字符串的字典
  给你一个代表字典的字符串。
  string = '{"name":"rocky", "age":5, "imported":True}'
  假设键值对很简单,没有嵌套的列表、字典等集合。值将只是数字(in/float)、字符串或布尔值。
  在不使用 json 库、exec 或 eval 函数或任何其他内置解析器的情况下,编写一个接受此字符串的函数,并返回由该字符串表示的实际字典。
  4) 迷宫中的最短路径
  您将获得代表迷宫的字符串列表。
  maze = [
      "P#----",
      "-#-##-",
      "------",
      "-#-##-",
      "-#-#--",
      "---#-X",
  ·P 代表玩家
  · - 代表一个空的空间。玩家可以站在空地上
  · #代表一堵墙。玩家不能站在墙上
  · X代表目标。如果玩家达到目标,他就会获胜。
  编写一个接受这个迷宫的函数,并返回从玩家到目标的最短路径。玩家一次只能移动一步,而且只能向 4 个方向移动——向上、向下、向左和向右。该函数返回的示例:
  ["down", "down", "right", "right", "right", "right", "right", "down", "down", "down"]
  5) 把字典转换为列表
  再一次,你会得到一个混乱的、搞砸了的、有多层嵌套的字典。
  d = {
      "a": "b",
      "c": "d",
      "e": {
          "f": "g",
          "h": "i"
      },
      "j": {
          "k": {
              "l": {"m":"n"}
          }
      }
  }
  编写一个函数将其中的每个嵌套字典转换为列表。输出示例:
  d = [
      ["a", "b"],
      ["c", "d"],
      ["e", [
          ["f", "g"],
          ["h", "i"]
      ]],
      ["j", [
          "k", [
              "l", ["m", "n"]
          ]
      ]]
  ]
  结论
  你单凭自己的能力解决了几个难题呢?花了多长时间?

TAG: 软件开发 Python

 

评分:0

我来说两句

Open Toolbar