想问如何修改这个代码吗,项目输入要求是一行定义一个关系,西文下的尖括号(关键词-复制粘贴)


from collections import defaultdict
from graphviz import Digraph


def create_graph(node_relations):
    graph = defaultdict(list)
    for u, v in node_relations:
        graph[u].append(v)
    return graph


def topological_sort(graph):
    visited = {}
    for key, values in graph.items():
        visited[key] = False
        for val in values:
            visited[val] = False
    stack = []

    def topological_sort_util(v):
        visited[v] = True
        for node in graph[v]:
            if not visited[node]:
                topological_sort_util(node)
        stack.insert(0, v)

    for node in visited.keys():
        if not visited[node]:
            topological_sort_util(node)

    return stack


def draw_graph(node_relations):
    dot = Digraph(comment='node graph', filename='blueprintNodeGraph-neato', format='png', engine='neato')
    dot.attr('node', shape='box', style='rounded,filled', fixedsize='false', fontname='Microsoft YaHei', fontsize='12')
    node_size = 0
    for relation in node_relations:
        node_size += 1
        dot.edge(relation[0], relation[1], len='3')
    dot.render(directory='doctest-output', view=True).replace('\\', '/')


if __name__ == '__main__':
    # 通过用户界面输入节点关系
    node_relations_input = input("请输入节点关系,以换行分隔:")
    # 创建关系图
    node_relations = [tuple(relation.strip('<> ').split(',')) for relation in node_relations_input.split('\n')]
    # 进行拓扑排序
    graph = create_graph(node_relations)
    sorted_nodes = topological_sort(graph)
    # 输出拓扑排序结果
    print("拓扑排序结果:")
    for node in sorted_nodes:
        print(node)
    # 绘制关系图并显示在界面上
    draw_graph(node_relations)

img

想问如何修改这个代码吗,项目输入要求是一行定义一个关系,西文下的尖括号<a,b>,可是每次输入时按换行符就会自动运行,如果复制粘贴,也只读取第一行节点关系
题目要求是

img

谢谢Thanks♪(・ω・)ノ

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^