On 2013-08-06 22:49, Saad Javed wrote: > That causes: > > Enter string: These are my friends living in the same city as i am. I have > known them for years. They are good people in general. They are: > Traceback (most recent call last): > File "chris_tweet_len.py", line 44, in <module> > print("\n".join(generate_tweets(message, users))) > File "chris_tweet_len.py", line 31, in generate_tweets > while users and len(new_message) + len(add) <= MAX_LENGTH: > UnboundLocalError: local variable 'new_message' referenced before assignment
Cannot reproduce. I'm not sure how you edited the script, but somehow you moved new_message to where it is unbound. See attached. > And the earlier fix now adds two users to a tweet, then one user, then two > user, then one... :( I don't see how that differs from your expected output...? > 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. You hit the 140 character limit if another user is added, so it resets to the base message and adds the next user(s) as possible. What is your expected output for that sample input?
#!/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 users and len(new_message) + len(add) <= MAX_LENGTH: add = " @" + users.pop(0) new_message += add 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)))
pgpgSwyxathrA.pgp
Description: PGP signature
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor