Python 3 Я думаю, что у меня есть несоответствие типов, но не могу найти его - PullRequest
0 голосов
/ 08 сентября 2010

Я использую Python 3.1 для написания простой игры с именами капиталов штатов. Я думаю, что у меня есть какое-то несоответствие типов, но я не знаю, что это такое. Я думаю, что это когда я сравниваю ответ игрока с реальным ответом, но не знаю, как сделать это правильно.

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 (сообщает [угадай]):

но я не знаю, что я делаю неправильно, потому что даже когда у меня правильный ответ, он говорит, что я не прав, но печатает тот же ответ, который я набрал Я знаю, что это вопрос новичка, но был бы признателен за любую помощь. (Я также знаю, что строка «нет, вы не правы» будет напечатана в любом случае, но я исправлю это позже).

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Вы можете использовать два «отпечатка» для его отладки:

print(playerguess)
print(states[guess])

это должно дать вам подсказку.

Я бы сказал, что когда вы получили свой Капитолий из CSV-файла, вы не удалили новую строку.

Так что, возможно, это будет работать:

for line in statefile:
    (state, capitol) = line.strip().split(",")
    states[state] = capitol
statefile.close()
0 голосов
/ 08 сентября 2010

Если у вас несоответствие типов, вы получите трассировку с большим количеством полезной информации. Я предполагаю, что, так как вы не опубликовали его, вы не получили трассировку, поэтому это не несоответствие типов.

Когда вы пытаетесь найти такую ​​проблему, попробуйте напечатать repr () строки:

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

Это покажет вам точно, что находится в каждой строке, включая любые пробелы или символы новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...