Значение моего флага не возвращает false или true, как ожидалось - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь проверить, есть ли список номеров, которые я выбираю, имеет во всех элементах разные номера. Я установил флаг переменной true, если все значения в списке были разными, и false в противном случае. Однако моя функция возвращает ноль, а не истину или ложь. Я знаю, что инициализирую переменную своего флага в нуле, потому что мне нужно было определить ту же самую переменную в начале функции

Я уже придумал код, но моя функция возвращает ноль. Мое предложение не повторяется

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 ]

2 голосов
/ 08 мая 2019

похоже, что он предполагает, что 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))
2 голосов
/ 08 мая 2019

Вам нужно взять вывод списка, полученный из 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
...