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

My flag value is not returning false or true as expected

我正在尝试验证我选择的数字列表是否在所有元素中都有不同的数字。如果列表中的所有值都不同,我将标志变量设置为 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))

您需要获取从 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))

更新:如果你真的想使用global,可以按如下操作

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

看起来他假设 v 是全局的并且他不​​必在 v 中存储 return 值。

为了访问全局变量,我们需要使用 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))