markov-sentence-generator icon indicating copy to clipboard operation
markov-sentence-generator copied to clipboard

pop(0) from empty list (including proposal for a fix)

Open markfink opened this issue 13 years ago • 1 comments

hi Harry,

thanks for sharing this. It turns out to be very helpful. Unfortunately sometimes I get into trouble when your code pop from an empty list (see below).

This is my proposal for a fix but there might be a more clever alternative... def next (prevList): sum = 0.0 retval = "" index = random.random () # Shorten prevList until it's in mapping while toHash (prevList) not in mapping: if prevList: prevList.pop (0) # cant pop from empty list else: curr = random.choice (starts) sent = curr.capitalize () prevList = [curr] # Get a random word from the mapping, given prevList for k, v in mapping [toHash (prevList)].iteritems (): sum += v if sum >= index and retval == "": retval = k return retval

all the best, Mark

Traceback (most recent call last): File "dbutils.py", line 92, in insert_news(2000) File "dbutils.py", line 84, in insert_news title, content, upd_at = create_one(gen) File "dbutils.py", line 73, in create_one content = content + gen() + ' ' File "/home/mark/devel/boodo/boodo/boodo/utils/markovgen/generator.py", line 14, in gen return genSentence(1) File "/home/mark/devel/boodo/boodo/boodo/utils/markovgen/sentence.py", line 117, in genSentence curr = next (prevList) File "/home/mark/devel/boodo/boodo/boodo/utils/markovgen/sentence.py", line 102, in next prevList.pop (0) IndexError: pop from empty list

markfink avatar Nov 26 '11 07:11 markfink

please write clear indents in else field.

elacsoft avatar Jun 26 '18 17:06 elacsoft