2013-12-12 12 views
0

所以我需要創建一個測驗,給用戶一個狀態,他們必須給我的首都。但由於某種原因,當我運行它時,並不會像我想要的那樣刪除所用的城市。使用字典進行測驗?

代碼

import random 
def main(): 
    capitals={"Washington":"Olympia","Oregon":"Salem",\ 
        "California":"Sacramento","Ohio":"Columbus",\ 
        "Nebraska":"Lincoln","Colorado":"Denver",\ 
        "Michigan":"Lansing","Massachusetts":"Boston",\ 
        "Florida":"Tallahassee","Texas":"Austin",\ 
        "Oklahoma":"Oklahoma City","Hawaii":"Honolulu",\ 
        "Alaska":"Juneau","Utah":"Salt Lake City",\ 
        "New Mexico":"Santa Fe","North Dakota":"Bismarck",\ 
        "South Dakota":"Pierre","West Virginia":"Charleston",\ 
        "Virginia":"Richmond","New Jersey":"Trenton",\ 
        "Minnesota":"Saint Paul","Illinois":"Springfield",\ 
        "Indiana":"Indianapolis","Kentucky":"Frankfort",\ 
        "Tennessee":"Nashville","Georgia":"Atlanta",\ 
        "Alabama":"Montgomery","Mississippi":"Jackson",\ 
        "North Carolina":"Raleigh","South Carolina":"Columbia",\ 
        "Maine":"Augusta","Vermont":"Montpelier",\ 
        "New Hampshire":"Concord","Connecticut":"Hartford",\ 
        "Rhode Island":"Providence","Wyoming":"Cheyenne",\ 
        "Montana":"Helena","Kansas":"Topeka",\ 
        "Iowa":"Des Moines","Pennsylvania":"Harrisburg",\ 
        "Maryland":"Annapolis","Missouri":"Jefferson City",\ 
        "Arizona":"Phoenix","Nevada":"Carson City",\ 
        "New York":"Albany","Wisconsin":"Madison",\ 
        "Delaware":"Dover","Idaho":"Boise",\ 
        "Arkansas":"Little Rock","Louisiana":"Baton Rouge"} 

    wrong=[] 

    print ("STATE TEST \n") 


    while len(capitals)>0: 
     pick=random.choice(list(capitals.keys())) 
     correct_answer=capitals.get(pick) 
     print ("What is the capital city of",pick,"?") 
     answer=input("Your answer: ") 
     if answer.lower()==correct_answer.lower(): 
      print ("That's Correct!\n") 
      del capitals[pick] 
     else: 
      print ("That's Incorrect.") 
      print ("The correct answer is",correct_answer) 
      wrong.append(pick) 

    print ("You missed",len(wrong),"states.\n") 


    if incorrect_answers: 
     print ("Here are the ones that you may want to brush up on:\n") 
     for each in wrong: 
      print (each) 
    else: 
     print ("Perfect!") 
main() 
+0

定義「不要刪除我想要的二手城市」。 – jazzpi

+0

當用戶猜測錯誤時,您不會從字典中移除狀態,並且用戶可以稍後再次猜測。那是你要的嗎?另外,定義了「incorrect_answers」的位置? – Kevin

+0

你有什麼證據證明它不會刪除正確回答的選秀權?你看到重複的選擇?嘗試將初始「dict」減少爲1或2個條目,以便於調試。 – dg99

回答

2

的問題是,你是從只有當答案是正確的字典取出的狀態,你必須無條件地將其刪除,請嘗試使用此代碼:

import random 
def main(): 
    capitals={"Washington":"Olympia","Oregon":"Salem",\ 
        "California":"Sacramento","Ohio":"Columbus",\ 
        "Nebraska":"Lincoln","Colorado":"Denver",\ 
        "Michigan":"Lansing","Massachusetts":"Boston",\ 
        "Florida":"Tallahassee","Texas":"Austin",\ 
        "Oklahoma":"Oklahoma City","Hawaii":"Honolulu",\ 
        "Alaska":"Juneau","Utah":"Salt Lake City",\ 
        "New Mexico":"Santa Fe","North Dakota":"Bismarck",\ 
        "South Dakota":"Pierre","West Virginia":"Charleston",\ 
        "Virginia":"Richmond","New Jersey":"Trenton",\ 
        "Minnesota":"Saint Paul","Illinois":"Springfield",\ 
        "Indiana":"Indianapolis","Kentucky":"Frankfort",\ 
        "Tennessee":"Nashville","Georgia":"Atlanta",\ 
        "Alabama":"Montgomery","Mississippi":"Jackson",\ 
        "North Carolina":"Raleigh","South Carolina":"Columbia",\ 
        "Maine":"Augusta","Vermont":"Montpelier",\ 
        "New Hampshire":"Concord","Connecticut":"Hartford",\ 
        "Rhode Island":"Providence","Wyoming":"Cheyenne",\ 
        "Montana":"Helena","Kansas":"Topeka",\ 
        "Iowa":"Des Moines","Pennsylvania":"Harrisburg",\ 
        "Maryland":"Annapolis","Missouri":"Jefferson City",\ 
        "Arizona":"Phoenix","Nevada":"Carson City",\ 
        "New York":"Albany","Wisconsin":"Madison",\ 
        "Delaware":"Dover","Idaho":"Boise",\ 
        "Arkansas":"Little Rock","Louisiana":"Baton Rouge"} 

    wrong=[] 

    print ("STATE TEST \n") 

    incorrect_answers = False 

    while len(capitals)>0: 
     pick=random.choice(list(capitals.keys())) 
     correct_answer=capitals.get(pick) 
     print ("What is the capital city of",pick,"?") 
     answer=raw_input("Your answer: ") 
     if answer.lower()==correct_answer.lower(): 
      print ("That's Correct!\n") 
     else: 
      print ("That's Incorrect.") 
      print ("The correct answer is",correct_answer) 
      wrong.append(pick) 
      incorrect_answers = True 
    del capitals[pick] 

    print ("You missed",len(wrong),"states.\n") 


    if incorrect_answers: 
     print ("Here are the ones that you may want to brush up on:\n") 
     for each in wrong: 
      print (each) 
    else: 
     print ("Perfect!") 
main() 

希望能幫助到你!

+1

這很可能是故意的行爲 - 如果你弄錯了,它會回到問題池中。從問題中不清楚期望的行爲是什麼。 – Tim

+1

問題的關鍵在於它並不是按照自己的意願刪除舊城,它看起來足夠清晰 –