2017-08-26 14 views
1

試圖通過字典來做到這一點,但它不起作用。有針對這個的解決方法嗎? 該任務是用戶被要求猜測從字典中隨機選擇的國家的首都。當用戶寫回答時,它會變成價值並檢查是否與國家/地區關鍵字匹配。字典中的隨機密鑰在作爲輸入輸入時無法識別它的值

import random 
capitals = {'England': 'London', 'Spain': 'Madrid', 'France': 'Paris'} 
rand= (random.choice (list(capitals))) 
for i in capitals: 
     inp= input("what's is the capital of "+rand+ ": ") 
     if inp.upper()==capitals[i].upper(): 
      print ("correct") 
      break 
     else: 
      print ("think again") 
+0

你問rand'的'資本,但檢查i'的'資本。 – Ryan

+0

'else'應該與現在正在工作的'for' – alfasin

回答

1

在第一次迭代, inp.upper()具有價值PARIScapitals[i].upper()具有價值LONDON

你需要做的是什麼,而不是比較inp.upper() == capitals[i].upper() 你應該做到以下幾點

inp.upper() == capitals[rand].upper() 
+0

對齊! :) 謝謝! – Orif

0

我不認爲需要循環。您應該從資本清單的大小中斷開重試次數。

您可以使用while循環,而不是:

import random 
capitals = {'England': 'London', 'Spain': 'Madrid', 'France': 'Paris'} 
rand= (random.choice (list(capitals))) 

while True: 
    inp= input("what's is the capital of "+rand+ ": ") 

    if inp.upper()==capitals[rand].upper(): 
     print ("correct") 
     break 
    else: 
     print ("think again") 
+0

你是對的,我只是試圖讓這個基本的想法工作,然後繼續調整。我正在考慮將它改爲while循環。謝謝! – Orif