'Python list is not adding a singular word to the list [closed]
(you can view the source here)
So I am running in to a issue.
Lets say I have a list named mylist.
When I add a word to the list, for example cat, it's not ['cat'] but instead ['c', 'a', 't']. And my code has a function where it wants to eliminate combinations its already tried, so you can see how this is a problem. Any help?
here is the code:
import os
from random import randrange
from colorama import *
def clear():
os.system('clear')
realWords = []
fakeWords = []
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
words = []
sentence = ""
def testAWord():
global fakeWords
global realWords
word = ""
for i in range(randrange(10)):
word += letters[randrange(len(letters))]
for i in fakeWords:
if word == i:
print(Fore.RED + "Already in database: FAKE")
break
for i in realWords:
if word == i:
print(Fore.LIGHTBLUE_EX + "Already in database: REAL")
break
print(Fore.GREEN + "Lets test a word. Is "+ Fore.LIGHTGREEN_EX + word + Fore.GREEN +" a word?")
isItAWord = input()
if isItAWord == "y":
realWords += str(word)
elif isItAWord == "n":
fakeWords += str(word)
# if isItAWord == "m":
# sent = makeASentence()
# print(sent)
if isItAWord == "v":
print(Fore.GREEN + str(realWords))
print(Fore.RED + str(fakeWords))
input()
clear()
while(True):
testAWord()
Solution 1:[1]
Use the .append() function:
if isItAWord == "y":
realWords.append(str(word))
elif isItAWord == "n":
fakeWords.append(str(word))
This will add the full word into your list, as opposed to the individual characters.
Solution 2:[2]
realWords += str(word) is equivalent to realWords.extend(str(word)), which appends all elements from the iterable str(word) to the list one by one.
Example:
>>> realWords = []
>>> word = 'foo'
>>> realWords += str(word)
>>> realWords
['f', 'o', 'o']
What you want is realWords.append(str(word)). Same goes for the handling of fakeWords.
You can also omit str in str(word) if word is already a string (I didn't check).
Solution 3:[3]
You cannot add elements to an array by simply "+="ing your element to the array, instead you need to [array].append([element]).
.append(), appends the element to the end of the array.
So try changing:
if isItAWord == "y":
realWords += str(word)
elif isItAWord == "n":
fakeWords += str(word)
to:
if isItAWord == "y":
realWords.append(str(word))
elif isItAWord == "n":
fakeWords.append(str(word))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Ani M |
| Solution 2 | timgeb |
| Solution 3 |
