"Joseph king" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] |I don't know how to pose this question so i will just say what i am trying | to do. | | i am not sure if this is at all possible.... i am trying to make a story | generator.... like the ones that i did in elementry school where they would | supply a story with blanks and you would have to place the nouns-verbs/you | best friends name and it would make a funny story. | | but i don't know how this would be ... i might be looking at it to simply. | i have tried the lines with '%s' but there is no way to print that to the | correct place that i have found with the raw_input what the person would | create. | i have also tried to do raw_input of where they should place the noun or | name in the sentence but it does not print correctly.
>>> story = '''The %(actor)s %(act)s the %(victim)s''' >>> labels = 'actor', 'act', 'victim' >>> words = {} >>> for blank in labels: words[blank] = raw_input(blank+': ') actor: giant act: squashed victim: python >>> print story % words The giant squashed the python >>> Q. How do I make sure the labels in the format string match the keys in the dict? A. Write them only once and use that to generate *both*. >>> mstory = '''The %%(%s)s %%(%s)s the %%(%s)s''' >>> astory = mstory % labels >>> astory 'The %(actor)s %(act)s the %(victim)s' >>> astory == story True What I would actually do is write the story with just '%' for each blank and use the replace method to change that to '%%(%s)s'. Note that the labels, which are also used for prompting the user, can have blanks: >>> '%(a string)s' % {'a string': 'okay'} 'okay' Or I might write 'story' as I originally did, and write a function to extract the labels (checking for duplicates). You might want to use the textwrap module for output. Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list