沒有多少人能解決的五個 Python 難題
這是一個挑戰(zhàn)——嘗試解決以下 5 個 Python 編程難題,不要用谷歌或百度去搜索答案。
1) 幻方
幻方是包含數(shù)字 1 到 9 的 3x3 網(wǎng)格。每 3 個連續(xù)數(shù)字(行、列或?qū)蔷€)必須加起來為 15。下面是一個有效的幻方示例:
在這個謎題中,你得到了一個不完整的幻方。
幻方不應(yīng)該有 0。此處,0 表示您需要填寫 1 到 9 之間的數(shù)字。
- 1 到 9 每個數(shù)字只能出現(xiàn)一次
- 3 個數(shù)字的每一行、每一列和對角線的和必須等于 15
2) 大寫一個搞砸的字典
給你一個亂七八糟的字典,里面有多個非結(jié)構(gòu)化的嵌套。例如:
編寫一個函數(shù),接受這個搞砸的字典,并返回這個字典的副本,其中所有鍵和值都轉(zhuǎn)換為大寫。
3) 來自字符串的字典
給你一個代表字典的字符串。
假設(shè)鍵值對很簡單,沒有嵌套的列表、字典等集合。值將只是數(shù)字(in/float)、字符串或布爾值。
在不使用 json 庫、exec 或 eval 函數(shù)或任何其他內(nèi)置解析器的情況下,編寫一個接受此字符串的函數(shù),并返回由該字符串表示的實際字典。
4) 迷宮中的最短路徑
您將獲得代表迷宮的字符串列表。
- P 代表玩家
- - 代表一個空的空間。玩家可以站在空地上
- #代表一堵墻。玩家不能站在墻上
- X代表目標。如果玩家達到目標,他就會獲勝。
編寫一個接受這個迷宮的函數(shù),并返回從玩家到目標的最短路徑。玩家一次只能移動一步,而且只能向 4 個方向移動——向上、向下、向左和向右。該函數(shù)返回的示例:
5) 把字典轉(zhuǎn)換為列表
再一次,你會得到一個混亂的、搞砸了的、有多層嵌套的字典。
編寫一個函數(shù)將其中的每個嵌套字典轉(zhuǎn)換為列表。輸出示例:
結(jié)論
你單憑自己的能力解決了幾個難題呢?花了多長時間?