Skip to content Skip to sidebar Skip to footer

Python: TypeError: Can't Convert 'generator' Object To Str Implicitly

I'm doing an assignment and here is what the class looks like: class GameStateNode: ''' A tree of possible states for a two-player, sequential move, zero-sum, perfect-i

Solution 1:

The problem is the part where you iterate over the children and convert them to strings:

(str(child) for child in node.children)

That is actually a generator expression, which can't be simply converted to a string and concatenated with the left part str(node.value) + '\n'.

Before doing the string concatenation, you should probably join the strings that get created by the generator into a single string by calling join. Something like this will join the strings using a comma:

','.join(str(child) for child in node.children)

In the end, your code should probably be simplified to something like

def _str(node):
    ''' (GameStateNode, str) -> str '''
    return (str(node.value) + '\n' + 
        (','.join(str(child) for child in node.children) if node.children else ''))

Of course, you can join the strings with some other character or string, like '\n', if you want to.


Post a Comment for "Python: TypeError: Can't Convert 'generator' Object To Str Implicitly"