[Solved]Re: Help with TypeError: Can't convert 'list' object to str implicitly
dave em
daveandem2000 at gmail.com
Wed Feb 5 21:49:19 EST 2014
On Wednesday, February 5, 2014 7:21:29 PM UTC-7, dave em wrote:
> Hello,
>>>> Background. My 11 y/o son and I have taken on the task to learn python and work our way through the http://inventwithpython.com/chapters/ book.
>> - We are currently on Chapter 9 and trying to modify the hangman program.
>>>> - the first challenge was to modify the word list into a dictionary. So we changed our words variable into a dictionary
>> -- I believe we did this correctly.
>>>> - But we somehow broke the game. All of the words are only two letters and the program crashes on exit with the following error.
>>>> Traceback (most recent call last):
>> File "/media/.../Python/hangman.py", line 155, in <module>
>> print('You have run out of guesses! \n After ' + str(len(missedLetters)) + ' missed guesses and ' + str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"')
>> TypeError: Can't convert 'list' object to str implicitly
>>>> -I can't see why this wouldn't work. By definition isn't this the cast:
>>>> 1) len(correctLetters) //returns the lengths of the variable as an int
>> 2) str(len(correctLetters)) // converts the integer into a string.
>>>> Applicable code is here:
>> # Check if player has guessed too many times and lost
>> if len(missedLetters) == len(HANGMANPICS) - 1:
>> displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
>> print('You have run out of guesses! \n After ' + str(len(missedLetters)) + ' missed guesses and ' + str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"')
>> gameIsDone = True
>>>> Any help to get us past this error message is most appreciated.
>>>> Thanks in advance,
>> Dave
Fixed the error and am now onto the next issue.
Solution was to return a list (I think) and then break out the components of the list and put in the variable. Here is how we did it:
secretWord = getRandomWord(words)
print('The secretWord is ' + str(secretWord[0]))
print('The secretKey is ' + str(secretWord[1]))
#Change secretWord from a list to a str
secretWord = secretWord[1]
def getRandomWord(wordDict):
# This function returns a random string from the passed dictionary of lists of strings, and the key also.
# First, randomly select a key from the dictionary:
wordKey = random.choice(list(wordDict.keys()))
print('The wordKey is ' + wordKey)
# Second, randomly select a word from the key's list in the dictionary:
wordIndex = random.randint(0, len(wordDict[wordKey]) - 1)
print('The wordIndex is ' + str(wordIndex))
print('The word is ' + wordDict[wordKey][wordIndex])
return [wordDict[wordKey][wordIndex], wordKey]
Cheers,
Dave
More information about the Python-list
mailing list