我的标志值未按预期返回false或true

时间:2019-05-08 14:45:44

标签: python python-3.x if-statement flags

我正在尝试验证我选择的所有元素中具有不同数字的数字列表。如果列表中的所有值都不相同,则将标志变量设置为true,否则设置为false。但是我的函数返回零,而不是true或false。我知道我将标志变量初始化为零,因为我需要在函数开始时定义相同的变量

我已经想出了一个代码,但是我的函数返回了零。我的for句子不反复使用

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))

2 个答案:

答案 0 :(得分:2)

您需要获取从creat_function获得的列表输出,并将其传递给diferences函数

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))

更新:如果您确实要使用全局,则可以执行以下操作

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())

输出将为

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

答案 1 :(得分:2)

看起来他假设v是全局的,他不必在v中存储返回值。

要访问全局变量,我们需要使用 global 关键字

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))