<返回更多

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

2023-04-09  今日头条  MikoCody
加入收藏


这是一个挑战——尝试解决以下 5 个 Python/ target=_blank class=infotextkey>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 之间的数字。

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",

编写一个接受这个迷宫的函数,并返回从玩家到目标的最短路径。玩家一次只能移动一步,而且只能向 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"]
        ]
    ]]
]

结论

你单凭自己的能力解决了几个难题呢?花了多长时间?

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>