这是一个挑战——尝试解决以下 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 个数字的每一行、每一列和对角线的和必须等于 15def 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"] ] ]]]结论
你单凭自己的能力解决了几个难题呢?花了多长时间?