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)))
pgpCWLSHd9g2t.pgp
Description: PGP signature
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor