random.randint()不会在终端中运行但在IDLE中运行

时间:2017-07-30 01:36:49

标签: terminal raspberry-pi python-idle

我有一个脚本,我试图在终端中运行,但它的一部分在IDLE中完美运行,并且在终端中运行时杀死脚本没有任何解释。我发现的关于类似问题的大多数帖子似乎来自使用Python 2的终端和使用Python 3的IDLE,但是我的脚本在IDLE中用于BOTH Python 2和3 大多数脚本运行正常,但调用此函数会使其失效。

import random
import time

def gen_rndNum():
    rndNum = random.randint(1,10)
    print ("Your random number is:")
    print (rndNum)

while 1:
    print ('Waiting...')

    if some_condition: # I know some_condition is not defined. It is a placeholder for the actual trigger
        print ("Trigger Detected!")
        gen_rndNum()
    else:
        #do some more stuff
    time.sleep(.25) #Don't use 100% of CPU

当我在IDLE中运行此代码时,我得到了我期望的结果:

Waiting...
Waiting...
Waiting...
Waiting...
Waiting...
Waiting...
Waiting...

然后当我按下按钮

Waiting...
Trigger Detected!
Your random number is:
2

当我在终端中运行此代码时,我得到:

Waiting...
Waiting...
Waiting...
Waiting...
Waiting...
Waiting...
Waiting...

然后当我按下按钮

Waiting...
Trigger Detected!

然后什么都没有。它就停止了。 我从Raspberry Pi 3运行它。我用

调用脚本
python /home/pi/modules/useButtons.py

一个有趣的旁注(我还想输入,如果可能的话)是,当在IDLE中运行时,此脚本占用大约11%的可用CPU功率,但在终端中,它需要25%(整个一个核心)。为什么需要更多电力?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题!虽然我的脚本没有相互矛盾的名称,但我有一个不同的脚本(我早就忘记了一个),名为" random.py"。我的脚本试图在CLI中运行时导入,但IDLE导入了正确的脚本。即使您不在当前脚本中使用该模块,也请确保永远不要使用脚本名称的内置模块名称。它会在以后引起问题!