-1

I found on the net that local variables of functions can't be accessed from outside when the function call has finished.I try to execute the program but it throws an error that variable is not defined. My code is

xyz=list()
n=0
def length(g):
    i=0
    n=g
    v=input("no of")
    while i<v:
        c=input("Enter the 1st dimension:")
        j=input("Enter the 2nd dimension:")
        i=i+1
        xyz.append(c)
        xyz.append(j)
        return c
        return j
        return n
def prod():
    global c
    for i in xyz:
        if n<c and n<j:
            print "Upload another"
        elif n==c and n==j:
            print "Accepted"
        else:
            print "Crop it"
       length(input("ENter the length"))
       prod()
       print xyz

It throws error like this

Traceback (most recent call last): File "C:\Python27\pic.py", line 32, in prod() `File "C:\Python27\pic.py", line 21, in prod if n

andreas
  • 16,357
  • 12
  • 72
  • 76
Chirag Dhingra
  • 128
  • 2
  • 17
  • Assuming that your indention gone bad while copy pasting it. why you have 3 return statements in `def length`. Its basic programming rule that a function cannot have more than 1 return statement. Other thing is you should also declare `c` as global in `def length`. Then you will not get this error – saurabh baid Sep 25 '16 at 17:02
  • @saurabhbaid - It's common for a function to have multiple `return` statements, although only one of them will execute. – TigerhawkT3 Sep 25 '16 at 17:11
  • @TigerhawkT3, I meant in the way he has written it, The control will return after first return so the later return statement would not execute. But I agree I havent choose my words correctly. – saurabh baid Sep 25 '16 at 17:13

1 Answers1

0

I guess this is what you would want to do

xyz=list()
n=0
def length(g):
    i=0
    n=g
    v=input("no of")
    global xyz
    while i<v:
        c=input("Enter the 1st dimension:")
        j=input("Enter the 2nd dimension:")
        i=i+1
        xyz.append(c)
        xyz.append(j)
        return c,j,n


def prod():
    global xyz
    c,j,n = length(input("ENter the length"))
    for i in xyz:
        if n<c and n<j:
            print "Upload another"
        elif n==c and n==j:
            print "Accepted"
        else:
            print "Crop it"

prod()
print xyz

Output

ENter the length 2
no of 2
Enter the 1st dimension: 1
Enter the 2nd dimension: 2
Crop it
Crop it
[1, 2]
saurabh baid
  • 1,819
  • 1
  • 14
  • 26