Как исправить эту функцию, пожалуйста? - PullRequest
0 голосов
/ 09 февраля 2019

Мне нужно закодировать функцию, которая принимает в качестве входных данных список кортежей, количество кортежей и два числа.Эта функция должна возвращать True, если два указанных числа существуют в одном из кортежей в нашем списке.

Например: ma_fonction(l,n,i,j)

  • l: список кортежей
  • i и j два числа от 0 до n-1 и i != j

Я попробовал этот код:

def ma_fonction(l,n,i,j):
    checker = False
    for item in l :

        if ( i in item and j in item ):
            cheker = True
            return True 
        else: 
            return False

ma_fonction([(0,1), (5,2), (4,3)], 6, 2, 5)

Но это не работает.Что мне добавить или изменить?


Я попробовал это (почему-то я не скопировал всю мою работу в своем вопросе)
Это моя работа:

def ma_fonction(l,n,i,j):
    checker = False
    if((i!=j )and (0<=i<=n-1 )and( 0<=j<=n-1) ):
        for item in l :

            if ( i in item and j in item ):
                cheker=True
                return True 
            else: 
                return False

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Логика заключается в том, что для каждого кортежа в этом списке проверьте, содержит ли он числа i и j.Если да, тогда верните True;Если нет, продолжайте проверять следующий кортеж.Как только вы закончите проверять каждый кортеж, и выясняется, что нет удовлетворенного кортежа, верните False.

def ma_fonction(l,n,i,j):
    for item in l :
        if ( i in item and j in item ):
            return True 
    return False
0 голосов
/ 09 февраля 2019

Это должно работать:

def ma_fonction(l,n,i,j):
    for item in l :
        if ( i in item and j in item ):
            return True 
    return False

Причина, по которой ваше решение не работает, состоит в том, что вы возвращаете False в первом элементе списка, который не совпадает с i и j.Что вам нужно сделать, это вернуть False тогда и только тогда, когда вы просмотрели все элементы списка и не смогли найти совпадение.

0 голосов
/ 09 февраля 2019

измените свою функцию следующим образом:

def foo(l,n,i,j):
    for item in l: 
        if (i in item and j in item):
            return True 
    return False

Вы перебираете все кортежи, и если i и j находятся в кортеже, вы возвращаете True.Если он прошел через все кортежи и не нашел соответствия, мы можем быть уверены, что можем вернуть False.

И этой реализации действительно не нужен параметр n

...