2012-02-05 289 views
-1

該函數在選擇一個整數後不會停止,它會在無限循環中繼續執行。任何人都可以告訴我爲什麼,或者我該如何修復這個問題?隨機int無限循環

def wGen(): 
    top = len(Repo.words) 
    randInt = random.randint(0,len(Repo.words)) 
    print randInt, top 

它產生這樣的輸出:(1037元數據庫中的數)

... 
214 1037 
731 1037 
46 1037 
490 1037 
447 1037 
103 1037 
342 1037 
547 1037 
565 1037 
90 1037 
... 

你去那裏我調用函數與此「菜單一樣功能」

def gameMenu(): 
"""Game Menu""" 

gameMenuPrint() 

def m(): 
    inp = raw_input('enter option: ') 
    while inp != 'q': 
     if inp == 'play' or inp =='1': GameC.wGen() 
     elif inp == 'help' or inp =='2': pass 
     elif inp == 'back' or inp =='0': mainMenu() 
     else: 
      print 'wrong input!' 
      inp = raw_input('enter valid a option!: ') 
m() 
+1

你可以顯示調用代碼嗎? – 2012-02-05 01:23:06

+0

你給的作品適合我。問題在別的地方。 – a3nm 2012-02-05 01:24:49

+0

我使用調用函數的代碼編輯我的帖子。這是你的意思嗎? – 2012-02-05 01:37:49

回答

4

這部分是問題:

def m(): 
    inp = raw_input('enter option: ') 
    while inp != 'q': 
     if inp == 'play' or inp =='1': GameC.wGen() 
     elif inp == 'help' or inp =='2': pass 
     elif inp == 'back' or inp =='0': mainMenu() 
     else: 
      print 'wrong input!' 
      inp = raw_input('enter valid a option!: ') 

您在進入循環之前要求提供raw_input。一旦你進入循環,你永遠不會再次要求輸入。它改成這樣:

def m(): 
    inp = raw_input('enter option: ') 
    while inp != 'q': 
     if inp == 'play' or inp =='1': GameC.wGen() 
     elif inp == 'help' or inp =='2': pass 
     elif inp == 'back' or inp =='0': mainMenu() 
     else: 
      print 'wrong input!' 
     inp = raw_input('enter option: ') 

雖然我其實比較喜歡這樣的:除非他們在第一個進入的raw_input「Q」

def m(): 
    while True: 
     inp = raw_input('enter option: ') 
     if inp == 'q': break 
     elif inp == 'play' or inp =='1': GameC.wGen() 
     elif inp == 'help' or inp =='2': pass 
     elif inp == 'back' or inp =='0': mainMenu() 
     else: 
      print 'wrong input!' 
+0

好的idont調用m()i cal for gameMenu()...再看一遍 – 2012-02-05 01:44:10

+0

@ BogdanMaier是什麼?你明白我的答案嗎? – 2012-02-05 01:45:55

+0

謝謝,我在wGen()後發現它忘了返回emnu,並且永遠感謝你,你指出它正確:)謝謝 – 2012-02-05 01:52:06

0

while條件永遠是正確的。你從來沒有爲inp獲得新的價值。將另一個raw_input添加到while循環中。