我正在使用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]):
但是我不知道我做错了什么,因为即使我的答案是正确的,它也说我错了,但打印出我输入的相同答案。 我知道这是一个新手问题,但我会感激任何帮助。 (我也知道在任何情况下都会打印出“不是你错了”这一行,但我稍后会解决这个问题)。
答案 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]))
这将显示每个字符串中的确切内容,包括任何尾随空格或换行符。