2017-09-28 77 views
-6

嘗試在空白測驗中創建填充。for vs.如果循環*錯誤選擇*

如果我在回答不正確的情況下使用for循環將始終返回列表中的第一個元素,有什麼方法可以繞過這個嗎?或使用不同的循環?

看到我下面的完整代碼。 它不是最後的 只適用於簡單的答案選擇。 正確回答第一個空白(Imagine)並在第二個空白處失敗時將出現此問題。

任何幫助將高度apreciatted。

imag = '***1*** there is no heaven, It is ***2*** if you try, No hell below us, Above us only sky, ***1*** all the people living for today, ***1*** there is no ***3***, It is not hard to do, Nothing to kill or die for, And no religion too, ***1*** all the people living life in ***4***.' 
imag_ans = ['Imagine', 'easy', 'heaven', 'peace'] 
blanks = ['***1***', '***2***', '***3***', '***4**']  

def level(): 
    print 'Please select Level? (Easy/Medium/Hard)' 
    global a 
    a = raw_input() 
    if a == 'Easy': 
     return attempts() 
    if a == 'Medium': 
     return 'Med' 
    if a == 'Hard': 
     return 'Hard' 
    else : 
     print 'Invalid option' 
     print '\n' 
     return level() 

def attempts(): 
    print 'How many attempts will you need?' 
    global numberofatt 
    numberofatt = raw_input() 
    try: 
     float(numberofatt) 
    except ValueError: 
     print "Please enter a number for attempts" 
     return attempts() 
    numberofatt = int(numberofatt) 
    if numberofatt <= 0 : 
     print 'Please enter a positive number' 
     return attempts() 
    else : 
     return quiz(a) 

def quiz(level): 
    i = 0 
    global user_ans 
    global i 
    print 'Please fill in the blanks, you have ' + str(numberofatt) + ' attempts' 
    for blank in blanks: 
     print 'Fill in blank' + blank 
     user_ans = raw_input() 
     if user_ans == imag_ans[i]: 
      i = i + 1 
      global imag 
      imag = imag.replace(blank, user_ans) 
      print "Correct!" 
      print imag 
     else : 
      return att() 

n = 1 
def att(): 
    if n == numberofatt : 
      return 'Game Finished' 
    if user_ans != imag_ans[i]: 
     global n 
     n = n + 1 
     #blank = 0 
     print 'Try Again' 
     return quiz(a) 


print level() 
+3

有沒有這樣的事情作爲「如果循環」 – khelwood

+0

這甚至不清楚你問什麼。 – hspandher

+0

你也可能想檢查'global'是如何工作的。 – Lafexlos

回答

0

你可以使用while循環:

def level(): 
    global a 
    a = raw_input('Please select Level? (Easy/Medium/Hard): ') 
    pending = True 
    while pending: 
     if a == 'Easy': 
      pending = False 
      return attempts() 
     elif a == 'Medium': 
      pending = False 
      return 'Med' 
     elif a == 'Hard': 
      pending = False 
      return 'Hard' 
     else : 
      print 'Invalid option' 
      print '\n' 

同樣的事情也可以應用於quiz()。正如評論,你應該檢查全球的工作方式。同樣,修改縮進(例如:att())。