Python 3我认为我的类型不匹配但找不到它

时间:2010-09-08 07:36:51

标签: python string file-io

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

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 == str(状态[guess]):

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

2 个答案:

答案 0 :(得分:2)

您可以使用两个“打印”来调试它:

print(playerguess)
print(states[guess])

这应该给你提示。

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

所以也许这会奏效:

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

答案 1 :(得分:0)

如果您的类型不匹配,那么您将获得包含大量有用信息的追溯。我假设你没有发布一个你没有得到回溯,所以它不是类型不匹配。

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

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

这将显示每个字符串中的确切内容,包括任何尾随空格或换行符。