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

开发 前端
这是一个挑战——尝试解决以下 5 个 Python 编程难题,不要用谷歌或百度去搜索答案。

这是一个挑战——尝试解决以下 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",
  • 代表玩家
  • 代表一个空的空间。玩家可以站在空地上
  • #代表一堵墙。玩家不能站在墙上
  • 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"]
]
]]
]

结论

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

责任编辑:华轩 来源: 今日头条
相关推荐

2020-07-20 09:40:49

MySQLBUG数据库

2024-02-20 08:23:35

LookupSpringbeans

2020-04-02 14:33:42

MySQLBUG解决方案

2010-07-01 14:35:57

Windows 7

2013-08-20 15:27:59

Linux操作系统

2023-10-29 00:55:44

2019-08-08 16:27:36

自动驾驶无人驾驶驾驶

2021-07-29 06:28:13

网络网工网络中断

2022-10-11 16:28:42

比特币加密货币资产

2022-11-12 12:32:39

.NET微软

2021-04-15 11:07:01

比特币货币加密货币

2018-06-21 07:40:23

无线充电无线供电无线输电

2020-06-09 08:00:52

Python开发代码

2020-09-22 11:55:26

Linux命令操作系统

2020-11-13 10:25:41

人脸数据

2022-09-13 14:47:55

区块链房地产佣金

2021-07-16 23:18:14

机器人人工智能垃圾分类

2014-02-24 16:26:15

云存储

2022-08-05 11:29:06

数据分析考核政治

2016-09-13 16:03:28

WindowsMicrosoft服务msconfig
点赞
收藏

51CTO技术栈公众号