2013-09-28 77 views
2

我感謝你的幫助。我的叔叔幫我弄明白了。我不知道這是否是最好的方式,但它的工作,這就是我需要的。在閱讀Python中的用戶輸入時生成中斷

import time 

name = raw_input("Hi, what is your name?") 
print "hi, " + name + ", nice to meet you." 
a1 = raw_input("Would you like to hear a knock knock joke?").lower() 
if a1 == "no": 
    print "OK, thanks anyways" 
elif a1 == "yes": 
    raw_input ("Knock Knock") 
print "interrupting cow" 
time.sleep(2) 
print "MOOOOOO!!!!" 

編輯:對不起,我正在使用Windows 8和Python 2.7。

我需要家庭作業幫助。我可以完成任務,但我想知道如何以不同的方式做到這一點。所以基本上我必須在Python中寫一個敲敲笑話。我想做「打斷牛」的笑話,但我不知道如何在打字時讓代碼中斷。這是我的。

name = raw_input("Hi, what is your name?") 
print "hi, " + name + ", nice to meet you." 
a1 = raw_input("Would you like to hear a knock knock joke?").lower() 
if a1 == "no": 
    print "OK, thanks anyways" 
elif a1 == "yes": 
    raw_input ("Knock Knock") 
    raw_input ("interrupting cow") 

所以我一直到我要回應的地方'打斷牛人',它會打斷'MOO !!!'在我打字的中間。我已經看到了一些關於「end」的代碼,但它並沒有真正起作用,或者我沒有用它來寫。誰能幫我嗎?

+1

你會需要更換'的raw_input(「打斷牛」)'用代碼來顯示「中斷牛」,那麼等待他們開始鍵入響應(東西像http://code.activestate.com/recipes/134892/),然後顯示「moo」。 – Cirdec

+0

哪個操作系統?不幸的是,Python並沒有提供可移植的'getch()'來一次獲取單個字符,這對此確實有幫助。 –

回答

2

你可以立即要求輸入之前使用thread(基本上是一個小任務)插隊,開始在後臺運行的線程。

在下面的例子中,我def INE一個功能punchline()」,其中「鳴叫」之前等待1秒。該函數在由start_new_thread()調用啓動的線程中執行。有關更多信息,請參閱鏈接的文檔。

import thread 
import time 


def punchline(): 
    time.sleep(1) 
    print 'MOO' 

# [...] 

thread.start_new_thread(punchline,()) 
raw_input("interrupting cow") 

爲獲得最佳效果,請隨機化sleep時間。

+0

請原諒我缺乏知識,但由於這是我的第一個程序,我希望能夠理解它,請介意給我講解完整的代碼嗎?像 thread.start_new_thread(punchline,()) 和 def punchline(): 做什麼? – user2825385

+0

@ user2825385:我添加了更多信息。 – Johnsyweb