How can I find the remainder when dividing 2 integers
Kent Johnson
kent at kentsjohnson.com
Sun Feb 26 16:06:48 EST 2006
Diez B. Roggisch wrote:
> silverburgh.meryl at gmail.com schrieb:
>
>> okay, I try you suggestion, and re-write my code like this:
>> colors = ["#ff0000", "#00FF00", "#0000FF"]
>> colorIndex = 0
>>
>> def getText(nodelist):
>>
>>
>> for str in strings:
>>
>> print colors[colorIndex % colors.length]
>> colorIndex += 1
>>
>> but i get this error:
>> print colors[colorIndex % colors.length]
>> UnboundLocalError: local variable 'colorIndex' referenced before
>> assignment
>
>
> If I take your code, it works for me.
Probably because it never calls getText().
The problem is that colorIndex is being assigned inside getText(). This
makes Python assume it is a local variable and it won't see the global
colorIndex. The UnboundLocalError is telling you that there is no value
(binding) for the local variable colorIndex.
One solution is to move colorIndex into getText() and initialize it
every time:
def getText(nodelist):
colorIndex = 0
for str in strings:
print colors[colorIndex % colors.length]
colorIndex += 1
If you want the value of colorIndex to persist so one call to getText()
picks up where the last one left off, put a global statement inside
getText() so Python knows colorIndex is global:
def getText(nodelist):
global colorIndex
for str in strings:
print colors[colorIndex % colors.length]
colorIndex += 1
Kent
More information about the Python-list
mailing list