Jupyter与IDLE运行相同Python代码输出不一致的问题求助
Jupyter与IDLE运行相同Python代码输出不一致的问题求助
嗨,我太懂你这种困惑了——明明代码一字不差,怎么Jupyter和IDLE跑出来结果差这么多?别担心,这不是你代码写错了,纯粹是两个环境的交互逻辑不一样而已!
给你掰扯清楚为啥会这样:
- Jupyter Notebook(包括IPython这类交互式环境)有个“自动展示最后一行结果”的小机制,只要代码块最后是变量或者表达式,它就会自动把这个内容打印出来,不用你额外写print。
- 但IDLE Shell是标准的Python交互环境,它只会老老实实地执行每一行代码,不会主动把最后一个变量的内容给你吐出来,必须你手动用
print()函数明确要求输出,它才会显示。
你看你的代码,最后一行只是写了dominoes,没有任何打印指令。Jupyter会贴心地帮你把这个列表内容展示出来,但IDLE执行完后,dominoes这个变量其实已经在内存里生成好了,只是没把它打印给你看而已。
解决办法超简单,把代码最后一行改成:
print(dominoes)
或者在原代码末尾加这么一行,这样不管在Jupyter还是IDLE里,都会乖乖输出所有多米诺骨牌的元组对啦。
对了,要是你已经在IDLE里跑过原来的代码了,也不用重新跑一遍,直接在Shell里输入print(dominoes),照样能看到生成的结果,变量早就存在啦!
备注:内容来源于stack exchange,提问作者Rodney




