Ken G. wrote: > I am sure there is an simple explanation but when I input > 5 (as integer), resulting in 05 (as string), I get zero as the end > result. When running the code: > > START OF PROGRAM: > Enter the 1st number: 5 > > 05 > > 0 > END OF PROGRAM: > > START OF CODE: > import sys > > def numberentry(): > print > number01 = raw_input("Enter the 1st number: ") > if number01 == "0": > sys.exit() > if len(number01) == 1: > number01 = "0" + number01 > print > print number01 > return(number01) > > number01 = 0 > numberentry() > print > print number01 > END OF CODE:
Let's simplify that and run it in the interactive interpreter: >>> x = 0 >>> def f(): ... x = 5 ... print x ... >>> f() 5 >>> x 0 You are seeing two different values because there are two separate namespaces. The x = 0 lives in the "global" namespace of the module while the other x = 5 exists in the "local" namespace of the function, is only visible from a specific invocation of f() and only while that specific invocation of f() is executed. If you want see the value of a global variable from within a function you must not rebind it: >>> def g(): ... print x ... >>> f() 5 >>> x = 42 >>> f() 5 If you want to update a global variable you should do that explicitly >>> def h(): ... return "foo" ... >>> x = h() >>> x 'foo' but there is also the option to declare it as global inside the function: >>> def k(): ... global x ... x = "bar" ... >>> k() >>> x 'bar' The global keyword is generally overused by newbies and tends to make your programs hard to maintain. Try it a few times to ensure that you understand how it works -- and then forget about it and never use it again ;) Back to your original code -- assuming that you want to update the global name 'number01' you could rewrite it like this: def numberentry(): digit = raw_input("Enter the 1st number: ") if len(digit) != 1 or not digit.isdigit(): raise ValueError("Not an allowed input: {!r}".format(digit)) return digit.zfill(2) number01 = numberentry() if number01 != "00": print number01 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor