0

I am programming the below code. When I try to use globals in each if/elif indentation, I get an error stating that the variable has been used before it was made global. If I use a global only in the first if, I get an error referring to the fact that a local variable can not be edited locally.

The below code is the furthest I have gotten to it properly working. This code does not bring any errors to light when debugged, only the callback error when run.

global daycountone
global daycounttwo
global y
print("Input date using numbers only")
print("Ex. Day: 13")
print("    Month: 4")
print("    Year: 2009")
dayone = input("Day ")
monthone = input("Month ")
yearone = input("Year ")
print("Input another date, still using numbers only")
print("Ex. Day: 13")
print("    Month: 4")
print("    Year: 2009")
daytwo = input("Day: ")
monthtwo = input("Month: ")
yeartwo = input("Year: ")
y = yearone
while(y>0):
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 366
                        else:
                                daycountone = daycountone + 365                 
                else:
                        daycountone = daycountone + 365
        else:
                daycountone = daycountone + 366
        y = y-1
while(y>0):
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 366
                        else:
                                daycounttwo = daycounttwo + 365                 
                else:
                                daycounttwo = daycounttwo + 365
        else:
                daycounttwo = daycounttwo + 366
        y = y-1
if(monthone == 2):
        daycountone = daycountone + 31
elif(monthone == 3):
        daycountone = daycountone + 59
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1           
elif(monthone == 4):
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
        daycountone = daycountone + 90
elif(monthone == 5):
        daycountone = daycountone + 120
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1
elif(monthone == 6):
        daycountone = daycountone + 151
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1
elif(monthone == 7):
        daycountone = daycountone + 181
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
elif(monthone == 8):
        daycountone = daycountone + 212
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
elif(monthone == 9):
        daycountone = daycountone + 243
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
elif(monthone == 10):
        daycountone = daycountone + 273
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
elif(monthone == 11):
        daycountone = daycountone + 304
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1   
elif(monthone == 12):
        daycountone = daycountone + 334
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1
if(monthtwo == 2):
        daycounttwo = daycounttwo + 31
elif(monthtwo == 3):
        daycounttwo = daycounttwo + 59
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1           
elif(monthtwo == 4):
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
        daycounttwo = daycounttwo + 90
elif(monthtwo == 5):
        daycounttwo = daycounttwo + 120
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 6):
        daycounttwo = daycounttwo + 151
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycountone = daycountone + 1
                else:
                        daycountone = daycountone + 1
elif(monthtwo == 7):
        daycounttwo = daycounttwo + 181
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 8):
        daycounttwo = daycounttwo + 212
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 9):
        daycounttwo = daycounttwo + 243
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 10):
        daycounttwo = daycounttwo + 273
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 11):
        daycounttwo = daycounttwo + 304
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1   
elif(monthtwo == 12):
        daycounttwo = daycounttwo + 334
        if(y%4 == 0):
                if(y%100 == 0):
                        if(y%400 == 0):
                                daycounttwo = daycounttwo + 1
                else:
                        daycounttwo = daycounttwo + 1
daycountone = daycountone + dayone
daycounttwo = daycounttwo + daytwo
daysbetween = daycounttwo - daycountone
if(daysbetween<0):
        daysbetween = -1 * daysbetween
prnt = 'The number of days between the two dates is ' + daysbetween + 'days exactly, accounting for leap years'
print prnt

2 Answers2

0

Python essentially follows functional scoping: see Short Description of the Scoping Rules?

Because you have no functions, you have no need of globals. When you do need to use globals, you declare them within local scopes for the first read. For example:

SOME_COUNTER = 0

def some_func(some_num):
    global SOME_COUNTER
    SOME_COUNTER += some_num

some_func(3)
print SOME_COUNTER  # 3
some_func(2)        
print SOME_COUNTER  # 5

def some_other_func(some_num):
    SOME_COUNTER += some_num  # this won't work; SOME_COUNTER isn't in scope

some_other_func(3)  # blows up with an UnboundLocalError saying SOME_COUNTER was used before definition (i.e. it isn't in scope)
Community
  • 1
  • 1
jwilner
  • 6,348
  • 6
  • 35
  • 47
0

Global variables would let you modify one of your variables inside a function, but because you aren't using any function you don't need to make anything global.

There's an easier way of doing this using the datetime module

hostingutilities.com
  • 8,894
  • 3
  • 41
  • 51