2014-03-31 52 views
0

我正在提出一個問題遊戲(沿20個問題),但我希望我的程序只提問一次。我已經嘗試過使用枚舉爲ques中的每個字符串賦值,然後有if語句表示if i = i:i!= 1希望這會將我的值更改爲其他值,以便它不重複問題但那沒用。任何幫助都會很好,這是我第一次編程一個問題遊戲,並且只要我能夠把它提升到一個穩定的點就對它抱有很高的期望。Python要求遊戲

import sys, random 
keepGoing = True 
ques = ['What does it eat?', 
     'How big is it?', 
     'What color is it?', 
     'How many letters are in it?', 
     'Does it have scales?', 
     'Does it swim?', 
     'How many legs does it have?' 
     ] 

ask = raw_input("Want to play a game?") 
while keepGoing: 
    if ask == "yes": 
     nextQ = raw_input(random.choice(ques)) 
    else: 
     keepGoing = False 

回答

2

我建議在你的問題清單上使用random.sample;它會得到所需數量的隨機問題而不重複。

下面是一些清理的代碼:

# assumes Python 2.x 
from random import sample 
from time import sleep 

NUM_QUESTIONS = 4 

questions = [ 
    'What does it eat?', 
    'How big is it?', 
    'What color is it?', 
    'How many letters are in it?', 
    'Does it have scales?', 
    'Does it swim?', 
    'How many legs does it have?' 
    # etc 
] 

def get_yn(prompt): 
    while True: 
     val = raw_input(prompt).strip().lower() 
     if val in {'y', 'yes'}: 
      return True 
     elif val in {'n', 'no'}: 
      return False 

def play(): 
    for q in random.sample(questions, NUM_QUESTIONS): 
     print(q) 
     sleep(2.) 

def main(): 
    while True: 
     play() 
     if not get_yn("Play again? "): 
      break 

if __name__=="__main__": 
    main() 
+0

現在我覺得自己很容易就像個白癡。 – Gumpy

+0

@Gumpy:哦,現在過來......這真是很難,我只是那麼好;-) –

+0

哈哈,非常感謝你的作品像一個魅力,我也給了我如此的代碼來研究! – Gumpy

3

做這樣的事情:

for question in random.shuffle(ques): 
    #your code here, for each question 

順便說一句,如果你的代碼是原來的樣子,因爲你寫它,它會產生一個死循環。嘗試改革它。

+0

謝謝我改變了! – Gumpy