2017-08-26 29 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