so i was trying to make a very simple counter (although not sure if that's what you call it)

import time
a = 0
def main():
    time.sleep(5)
    b = a + 1
    print (b)
    del(a)
    a = b
    del(b)
    main()   
main()

i know this is very unefficient and there is probably some command to count, but why doesn't this work?

i thought for sure it would print the next number every 5 seconds: 1, 2, 3, 4, 5, etc.

but apparently "a is referenced before assignment" which i don't see why it's a problem, because after the first reference a = 0, it should just loop...?

Recommended Answers

All 6 Replies

sorry i think i accidently double posted when changing code to python syntax.

i'll mark the other one as solved.

Why are you using del and using a recursive function? Why are you using two variables when you are only keeping track of one number?

Try something like this:

import time
a = 0
while True:
    a += 1
    print(a)
    time.sleep(5)

My recommendation would be that you forget that del exists until you are sure that you have a good use for it.

thanks it works great...

i used del so that it would forget the prior meanings of a and b, although i know its unnecesary since meaning automatically changes.

and i used two variables because i did not know that a +=1 statement and i couldn't exactly write a = a+ 1, could i?

but anyways, thanks it works great... although still can't understand why my didn't work.

thanks it works great...

i used del so that it would forget the prior meanings of a and b, although i know its unnecesary since meaning automatically changes.

and i used two variables because i did not know that a +=1 statement and i couldn't exactly write a = a+ 1, could i?

but anyways, thanks it works great... although still can't understand why my didn't work.

a += 1 is the same as a = a + 1 , which, yes, would work fine.

Your code doesn't work because a is a global variable but when you are referencing it in main(), it is treated as a local variable, which doesn't exist. You could change your code like this to get it to run:

import time
a = 0
def main():
    time.sleep(5)
    global a
    b = a + 1
    print (b)
    del(a)
    a = b
    del(b)
    main()   
main()

However, I wouldn't do this.

alright, thanks for explaining...

of course i knew from the beginning that my attempt wouldn't be the best approach... i've adopted your counter for what i needed the counter for...

so from what i understand, "while true" automatically makes a loop of everything indented below it, right?

That's right. You could change True to some other condition if you wanted the counting to stop.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.