社区首页 >问答首页 >为什么当我运行我的程序时什么也没有发生?

为什么当我运行我的程序时什么也没有发生?
EN

Stack Overflow用户
提问于 2017-03-09 10:08:45
回答 2查看 43关注 0票数 1

我尝试在Python中运行Dijkstra算法。但是,当我在Eclipse下执行这段代码时,什么也没有显示。我看到pydev理解了我所有的导入,并且没有错误message.Can,有人给我指出了正确的方向吗?

代码语言:javascript
代码运行次数:0
复制
class Graph(object):
    def __init__(self):
        self.nodes = set()
        self.edges = {}
        self.distances = {}

    def add_node(self, value):
        self.nodes.add(value) 

    def add_edge(self, from_node, to_node, distance):
        self._add_edge(from_node, to_node, distance)
        self._add_edge(to_node, from_node, distance) 

    def _add_edge(self, from_node, to_node, distance):
        self.edges.setdefault(from_node, [])
        self.edges[from_node].append(to_node)
        self.distances[(from_node, to_node)] = distance 
def dijkstra(graph, initial_node):
    visited = {initial_node: 0}
    current_node = initial_node
    path = {}

    nodes = set(graph.nodes)

    while nodes:
        min_node = None
        for node in nodes:
            if node in visited:
                if min_node is None:
                    min_node = node
                elif visited[node] < visited[min_node]:
                    min_node = node  
        if min_node is None:
            break 

        nodes.remove(min_node)
        cur_wt = visited[min_node]

        for edge in graph.edges[min_node]:
            wt = cur_wt + graph.distances[(min_node, edge)]
            if edge not in visited or wt < visited[edge]:
                visited[edge] = wt
                path[edge] = min_node 

    return visited, path

def shortest_path(graph, initial_node, goal_node):
    distances, paths = dijkstra(graph, initial_node)
    route = [goal_node]

    while goal_node != initial_node:
        route.append(paths[goal_node])
        goal_node = paths[goal_node]

    route.reverse()
    return route

if __name__ == '__main__':
    g = Graph()
    g.nodes = set(range(1, 7))
    g.add_edge(1, 2, 7)
    g.add_edge(1, 3, 9)
    g.add_edge(1, 6, 14)
    g.add_edge(2, 3, 10)
    g.add_edge(2, 4, 15)
    g.add_edge(3, 4, 11)
    g.add_edge(3, 6, 2)
    g.add_edge(4, 5, 6)
    g.add_edge(5, 6, 9)
    assert shortest_path(g, 1, 5) == [1, 3, 6, 5]
    assert shortest_path(g, 5, 1) == [5, 6, 3, 1]
    assert shortest_path(g, 2, 5) == [2, 3, 6, 5]
    assert shortest_path(g, 1, 4) == [1, 3, 4]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-09 10:15:49

假设g是一个图形对象,您可以尝试打印节点、边和距离,方法如下:

代码语言:javascript
代码运行次数:0
复制
print g.nodes
print g.edges
print g.distances

它将帮助您理解图形结构,并尝试使用print而不是assert。在本例中,这三行将打印以下内容:

代码语言:javascript
代码运行次数:0
复制
set([1, 2, 3, 4, 5, 6])
{1: [2, 3, 6], 2: [1, 3, 4], 3: [1, 2, 4, 6], 4: [2, 3, 5], 5: [4, 6], 6:[1, 3, 5]}
{(1, 2): 7, (3, 2): 10, (1, 3): 9, (3, 6): 2, (4, 5): 6, (6, 1): 14, (3, 1): 9, (5, 4): 6, (2, 1): 7, (6, 3): 2, (5, 6): 9, (1, 6): 14, (4, 3): 11, (4, 2): 15, (2, 3): 10, (3, 4): 11, (2, 4): 15, (6, 5): 9}

希望它能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2017-03-09 10:14:51

您没有打印任何内容。如果assert没有失败,它将不会显示任何内容。

使用print而不是assert来了解shortest_path是否返回这些数组。(您实际上可以知道它的存在,因为assert不会引发任何错误)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42692390

复制
相关文章
BI为什么我的查询运行多次?
连接器可以出于各种原因对数据源进行多次调用,包括元数据、结果缓存、分页等。 此行为是正常的,旨在以这种方式工作。
冬夜先生
2022/09/09
5.5K0
当我参加培训的时候,我在学什么?
在旧金山举行的 erlang/elixir 2017 大会上周结束。这次,我并未参加 —— 权衡再三,我选择了这周的 complete OTP 培训,毕竟大会的视频 youtube 上找得见,可以慢慢补,培训错过了就没了。 参加一次技术培训,代价往往不菲,像这样一个四天的培训,价格是两千多刀,你很难说出它有多值 —— 培训的主题有一半都是我已经了解或掌握的内容,在过去的一两个月,我还给我的 team 培训过;另一半,其实给我空出来四天的时间,我自己看书或者读 erlang 的文档,获取到的知识也未必比参加培
tyrchen
2018/03/29
7090
当我参加培训的时候,我在学什么?
如果我在 Linux 上运行“sudo rm -rf /”会发生什么?
Linux 文件系统的工作方式与 Windows 系统不同,与将文件和配置存储在 、 或 Drive 中的 Windows 不同C:,D:LinuxE:将所有内容存储在根目录 (/)中。
网络技术联盟站
2022/06/21
2.6K0
如果我在 Linux 上运行“sudo rm -rf /”会发生什么?
当我在微调的时候我在微调什么?
从 BERT 开始,预训练模型(PLMs)+微调(finetune)已经成为了NLP领域的常规范式。通过引入额外的参数(新的网络层)和特定任务的目标函数,PLMs在该任务的数据集下经过finetune后,总能取得评价指标上的提升,甚至达到SOTA。
对白
2022/04/01
1.7K0
当我在微调的时候我在微调什么?
选择篇(011)-当我们这样做时会发生什么?
参考答案:A 解析: 这在JavaScript中是可能的,因为函数也是对象!( 原始类型之外的所有东西都是对象) 函数是一种特殊类型的对象。您自己编写的代码并不是实际的函数。该函数是具有属性的对象,此属性是可调用的。
齐丶先丶森
2022/05/12
1920
当我看技术文章的时候,我在想什么?
一个叫做“绝色天龙”的小伙伴写于 2018 年 7 月,总阅读 12w 多还挺高的。
why技术
2021/04/22
3840
当我看技术文章的时候,我在想什么?
go: 当我们在使用sync.Map时,发生了什么
sync.Map是我比较喜欢的一个库,用了非常久,今天突发奇想瞧瞧它的实现。又一次被宇宙中第二NB的语言--go 折服了。 这里准备写一篇文章,讨论下当使用sync.Map执行操作的时候,会发生什么。
超级大猪
2020/07/06
9670
为什么private方法加了@Transactional,事务也没有生效?
现在产品期望用户创建和保存逻辑分离:把User实例的创建和保存逻辑拆到两个方法分别进行。 然后,把事务的注解 @Transactional 加在保存数据库的方法上。
JavaEdge
2021/12/07
1.3K0
为什么private方法加了@Transactional,事务也没有生效?
当我谈论URL编码时我在谈论什么
今天收到一个 Bug, 一个超级奇怪的人名叫做 Isxxxxa Onxxxna Anton
szhshp
2022/08/15
2830
当我做 hackathon 时我在做什么 (3)
治大国若烹小鲜。做 hackathon 也是如此:需要有合适的方法(能),合适的工具(贤),然后朝着目标方向不疾不徐,缓步前进(有所为有所不为)。
tyrchen
2021/01/29
6940
当我做 hackathon 时我在做什么 (3)
当我做 hackathon 时我在做什么 (1)
从上周四开始的周末(1/7-1/10),是 Tubi 一年一度的 OSS-a-thon。所谓 OSS-a-thon,是我们为了回馈开源社区举办的 hackathon,参与者需要做和开源项目有关的项目 — 可以是对已有的开源项目进行改进,提交 PR,或者做新的项目,但需要开源。
tyrchen
2021/01/29
1.1K0
当我做 hackathon 时我在做什么 (1)
当我做 hackathon 时我在做什么 (2)
前文中提到,我做的第二个项目是个可视化的项目,名字叫 deneb。deneb 是天鹅座的一等星,也是夏季大三角和北十字两个星群的端点之一。deneb 是对 vega-lite 的封装,受 同样封装了 vega-ltie,深得我喜爱的 Python 的库 altair 的启发。嗯,deneb - vega - altair,聪明的你一定想到了我为什么起这样一个名字:
tyrchen
2021/01/29
2K0
当我做 hackathon 时我在做什么 (2)
为什么Go的协程调度很快?
在单进程时代,执行流程单一,计算机只能一个任务一个任务去处理,一切程序只能串行执行,进程阻塞会带来CPU时间浪费;在多进程/线程时代,当一个进程阻塞时,切换到另外等候的进程,时间片轮转法保证了等待的进程都能够被运行,但是进程间的调度会占用CPU大部分时间;在高并发场景下,如果为每个任务都去创建线程是不现实的。是否能在线程基础上再做划分呢?我们将一个线程切分为用户线程(co-routine协程)和内核线程(thread线程),将其绑定在一起,CPU只去操作内核线程thread。
才浅Coding攻略
2022/12/12
7790
为什么Go的协程调度很快?
我为什么读博,以及我为什么不读博?
研究生三年后,毕业生都做出了自己的选择,一部分人就业,一部分人选择继续深造,不同的路径,同样的都是在探索自己的生涯之路。很多人都会比较一下毕业后直接工作和读博这三年内到底有何不同?下面就彻底晒晒。
用户3578099
2020/11/30
1.1K0
我为什么读博,以及我为什么不读博?
为什么我的BERT不行?
这节只列举问题,思路放下一章。这里是给大家去定位问题的思路,通过这些渠道能发现一些问题,而不是对问题束手无策了。
lyhue1991
2023/02/23
1.2K0
为什么我的BERT不行?
Linux 为什么运行 swapper
linux 系统中,当 cpu 上没有要执行的任务时,往往会运行 swapper 进程,即 idle 状态,这时我们可以说 cpu 处于空闲状态。
Lokinli
2023/03/09
2.3K0
认识区块链,认知区块链——热闹是它们的,我什么也没有
(请不要将币混淆成区块链)相比去年的火热,今年确实冷清了不少,很多团队发展困难,甚至解散,区块链技术的应用依旧需要时间的催化。
MavenTalker
2019/08/01
5991
为什么混合云爆发没有发生?
在多年前人们讨论混合云的时候,云爆发风靡一时。但如今,几乎没有人谈论它。 多年前,混合云爆发的概念非常引人注目:在私有云和公共云上都有工作负载,并且能够在正常运行期间在私有云上运行这些工作负载,并在私
静一
2018/03/28
9140
为什么混合云爆发没有发生?
Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?
很多 Android 工程师在投简历找工作之前,会去补习一下 Activity 的启动模式(launchMode),因为面试的时候经常会考。但真正把它搞懂的人是很少的——包括不少拿它做面试题的面试官。
扔物线
2020/10/26
1.8K0
Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?
为什么我的 Mac 运行缓慢以及如何使用CleanMyMac X修复它
近些年伴随着苹果生态的蓬勃发展,越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现,它的使用逻辑与Windows存在很多不同,而且随着使用时间的增加,一些奇奇怪怪的文件也会占据有限的磁盘空间,进而影响使用。
用户9208731
2023/02/27
2.8K0
为什么我的 Mac 运行缓慢以及如何使用CleanMyMac X修复它

相似问题

当我运行我的程序时,什么也没有显示

10

当我运行我的脚本时,什么也没有发生

26

当我运行吞咽时什么也没有发生

114

我试图运行我的python程序,但是当我运行它时什么也没有发生。

22

当我运行rake db:migrate时什么也没有发生

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文