On 2013-08-06 14:40, Saad Javed wrote:
> It will add max no. of  users to one tweet until limit is reached. I want
> all users added to the tweet. E.g. if 4 users can be added to the tweet
> before reaching the limit, return three tweets...first two with 4 users
> attached and the last one with three.

Ah, I see. Sorry, I misread your requirements. Something like this should work.

    #!/usr/bin/env python

    MAX_LENGTH = 140


    class TweetTooLongError(Exception):
        """
        Raised when a user would be too long to add to the tweet, even alone.
        """
        pass


    def generate_tweets(message, users):
        """
        Generate tweets based around a message, with users
        appended to each tweet.

        :param message: the base message
        :param users: a group of users to append
        :returns: tweets based around the message to the users
        """

        add = ""
        longest_in_list = " @" + max(users, key=len)

        if len(longest_in_list) + len(message) > MAX_LENGTH:
            raise TweetTooLongError(
                "At least one user would make the tweet too long."
            )

        while users:
            new_message = message
            while len(new_message) + len(add) <= MAX_LENGTH:
                new_message += add
                if not users:
                    break
                add = " @" + users.pop(0)
            yield new_message


    if __name__ == "__main__":
        users = [
            "saad", "asad", "sherry", "danny", "ali", "hasan", "adil",
            "yousaf", "maria", "bilal", "owais",
        ]
        message = raw_input("Enter string: ")
        print("\n".join(generate_tweets(message, users)))

Attachment: pgpCWLSHd9g2t.pgp
Description: PGP signature

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to