Luismaia1994
Luismaia1994

Reputation: 143

My flag value is not returning false or true as expected

I'm trying to verify is a list of numbers i choose has in all elements diferent numbers. I set a flag variable true if all values in list were diferent and false otherwise. However my function is returning zero and not true or false. I know i inicialize my flag variable at zero because i needed to defined that same variable at the start of the function

i already came up with a code but my function is returning zero. My for sentence is not beeing iterated

v=[]

def creat_function():
    v=[int(input('digit a number\n')) for j in range(0,int(input('number of elements\n')))]
    return v
print(creat_function())

def diferences(v):
    flag=0
    for j in range(0,len(v)):
        if v[j-1]!=v[j]:
            flag=True
        else:
            flag=False
    return flag
print(diferences(v))

Upvotes: 0

Views: 798

Answers (2)

Devesh Kumar Singh
Devesh Kumar Singh

Reputation: 20490

You need to take the list output which you get from creat_function and pass it to diferences function

def creat_function():

    v=[int(input('digit a number\n')) for j in range(0,int(input('number of elements\n')))]
    return v

def diferences(v):
    flag=0
    for j in range(0,len(v)):
        if v[j-1]!=v[j]:
            flag=True
        else:
            flag=False
    return flag

#Get list from creat_function
v = creat_function()

#Pass it to diferences
print(diferences(v))

Update: If you really want to use global, you can do as follows

v=[]

def creat_function():
    #v is global
    global v
    v=[int(input('digit a number\n')) for j in range(0,int(input('number of elements\n')))]


def diferences():
    # v is global
    global v
    flag=0
    for j in range(0,len(v)):
        if v[j-1]!=v[j]:
            flag=True
        else:
            flag=False
    return flag

#Get list from creat_function
creat_function()

#Pass it to diferences
print(diferences())

Output will be

number of elements
5
digit a number
1
digit a number
2
digit a number
3
digit a number
4
digit a number
5
True


number of elements
5
digit a number
1
digit a number
1
digit a number
2
digit a number
3
digit a number
3
False

Upvotes: 2

mkrana
mkrana

Reputation: 430

looks like he is assuming v is global and he don't have to store return value in v.

for accessing global variables we need to use global keyword

v=[]

def creat_function():
    global v
    v=[int(input('digit a number\n')) for j in range(0,int(input('number of elements\n')))]
    return v
print(creat_function())

def diferences(v):
    flag=0
    for j in range(0,len(v)):
        if v[j-1]!=v[j]:
            flag=True
        else:
            flag=False
    return flag
print(diferences(v))

Upvotes: 2

Related Questions