2010-09-08 77 views
0

我正在使用Python 3.1编写一个涉及命名状态capitols的简单游戏。我认为我有某种类型的不匹配,但我不知道它是什么。 我认为这是将玩家的答案与真实答案进行比较,但不知道如何正确答案。Python 3我认为我有一个类型不匹配,但找不到它

from random import * 
states = {} 
print ("Guess State Capitols") 

statefile = open("state capitols.csv") 
for line in statefile: 
    (state,capitol) = line.split(",") 
    states[state] = capitol 
statefile.close() 
guessnum = randint(1,50) 
names = list(states.keys()) 
guess = names[guessnum] 
print("What is the capitol of " + guess) 
playerguess = input() 
if playerguess == str(states[guess]): 
    print("Yes You are right!") 
print("No you are wrong") 
print(str(states[guess])) 

这是在

如果playerguess ==海峡(州[猜想]):

,但我不知道我做错了,因为即使当我有正确的答案,它说我错了,但打印输入相同的答案。 我知道这是一个新手问题,但将不胜感激任何帮助。 (我也知道在任何情况下都会输出“不,你错了”这行,但我会在稍后解决)。

+0

如果您发布错误的实际文本,我们将更容易提供帮助。 – 2010-09-08 11:24:55

回答

2

你可以用两个“打印”进行调试:

print(playerguess) 
print(states[guess]) 

这应该给你的提示。

我会说,当你从你的csv文件得到你的国会大厦时,你没有拿出换行符。

所以,也许这将工作:

for line in statefile: 
    (state, capitol) = line.strip().split(",") 
    states[state] = capitol 
statefile.close() 
+0

修复它。我必须记住换行符。我也不知道你可以'堆叠'这样的方法。所以我学到了两件事。非常感谢 – chrisfs 2010-09-08 15:08:51

0

如果你有一个类型不匹配,那么你将得到有很多有用的信息的回溯。我会假设因为你没有发布一个你没有得到回溯,所以它不是类型不匹配。

当你试图找到这样的问题,你应该尝试打印再版()的字符串:

print(repr(playerguess)) 
print(repr(states[guess])) 

,会告诉你到底是在每个字符串,包括任何尾随空格或换行。

相关问题