2015-10-21 76 views
0

我正在做一個小小的gag程序,它將一堆隨機數輸出到我的Ubuntu終端上,直到數字滿足特定條件,此時打印access granted在python中停止計時器

但是,我想停止定時器循環,一旦條件滿足,我不知道如何。

這裏的代碼如下:

import random 
import threading 

def message(): 
    tt = threading.Timer(0.125, message).start() 
    num = str(random.randint(137849013724,934234850490)) 
    print(num) 
    if num[3] == "5" and num[6] == "7": 
     print("access granted") 

message() 
+0

謝謝!我能夠按照需要工作。 – evandewey

+0

如果我的答案適合您,請[接受它](http://stackoverflow.com/help/someone-answers),並考慮對您之前的所有問題也做同樣的事情。 – tzaman

回答

3

Timer對象調用其功能一次延遲一段時間後,就是這樣。有一個「循環」的原因是因爲你告訴定時器調用的函數是設置下一次定時調用自己的函數。因此,只要滿足條件,您就不需要這樣做:

def message(): 
    num = str(random.randint(137849013724,934234850490)) 
    print(num) 
    if num[3] == "5" and num[6] == "7": 
     print("access granted") 
    else: 
     threading.Timer(0.125, message).start() # <== moved 
+0

謝謝。我想知道是否沒有更簡單的方法。 – evandewey

+0

哎呀,這個評論是爲了第二個答案。 – evandewey

1

您不需要爲此創建線程計時器。只需循環適當數量的隨機數字即可:

import time 
import random 
for i in range(10): 
    print(random.randint(1,10), flush=True) 
    time.sleep(0.1)