第六周总结
本次我基本完成了地铁查询系统的web端内容,但成品仍有很多瑕疵,只满足了最基本的内容功能,设计代码如下:
def get_station_info(station_name):
sql = "SELECT * FROM stations WHERE name='%s'" % station_name
result = execute_sql(sql)
if len(result) == 0:
return None
else:
return result[0]
import heapq
def dijkstra(graph, start, end):
# 记录每个节点的距离和前驱节点
distances = {start: 0}
path = {}
# 将起点加入队列
heap = []
heapq.heappush(heap, (0, start))
# 遍历所有节点
while heap:
(current_distance, current_node) = heapq.heappop(heap)
# 如果当前节点已经访问过,则跳过
if current_node in path: continue
# 将当前节点标记为已访问
path[current_node] = current_distance
# 如果到达终点,则返回最短路径长度
if current_node == end:
return current_distance
# 遍历当前节点的邻居节点
for neighbor, distance in graph[current_node].items():
new_distance = current_distance + distance
# 如果通过当前节点到邻居节点的距离更短,则更新距离和前驱节点
if neighbor not in distances or new_distance < distances[neighbor]:
distances[neighbor] = new_distance
heapq.heappush(heap, (new_distance, neighbor))
# 如果无法
达终点,则返回无穷大
return float('inf')
def calculate_distance(from_station, to_station):
from_station_info = get_station_info(from_station)
to_station_info = get_station_info(to_station)
if not from_station_info or not to_station_info:
return None
graph = build_graph()
distance = dijkstra(graph, from_station_info["id"], to_station_info["id"])
return distance
def build_graph():
graph = {}
sql = "SELECT * FROM graph"
result = execute_sql(sql)
for row in result:
from_station_id, to_station_id, distance = row["from_station_id"], row["to_station_id"], row["distance"]
# 构建起点到终点的连接关系和权重
if from_station_id not in graph:
graph[from_station_id] = {}
graph[from_station_id][to_station_id] = distance
# 构建终点到起点的连接关系和权重
if to_station_id not in graph:
graph[to_station_id] = {}
graph[to_station_id][from_station_id] = distance
return graph
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?