Проверка элементов и кортежей в кортеже - PullRequest
1 голос
/ 28 октября 2019

Так что в основном я волнуюсь по этому поводу, потому что я хочу проверить все кортежи внутри основного кортежа, если есть какие-либо отрицательные числа, и если есть, я хочу, чтобы функция возвращала False, и если нет, я хочу, чтобы она возвращалаПравда. Дело в том, что он проверяет только до 1-го элемента 2-го кортежа, и я не могу понять, что на самом деле не так с кодом. Поэтому, если бы кто-нибудь мог мне помочь, я был бы очень признателен.

 maze = ((1,3),(4,-1))

def lab2(maze):
    for i in range(len(maze)):
       for y in maze[i+1]:
           if maze[i][y] < 0:
               return False
           else:
               return True

print(lab2(maze))

Кстати, я забыл сказать, что я также хочу проверить, есть ли дублированные кортежи, и если есть, я хочу, чтобы функция возвращала false, но не работает

maze = ((1,2),(3,4),(3,4))

def eh_conj_posicoes(maze):
    for row in maze:
        for el in row:
            if el < 0:
                return False
    tup = ()
    for row2 in maze:
        tup = tup + maze[0]
        if row2[1:] is tup:
            return False
        else:
            tup = tup + row2
    return True

print(eh_conj_posicoes(maze))

1 Ответ

0 голосов
/ 28 октября 2019

Существует много ошибок в коде, но проблема, которая мешает вам идти дальше, состоит в том, что когда вы возвращаетесь из функции, функция не будет выполняться. Итак, если вы хотите проверить все элементы в структуре данных и вернуть False, если какой-либо из них отрицательный, возвращайте True только после того, как вы закончите проверку всех элементов. Теперь проверяется только один элемент, функция возвращается и не продолжается.

def lab2(maze):
    for row in maze:
        for el in row:
            if el < 0: 
                return False

    # Now all for loops have completed 
    # without returning False (i.e. no negative nubmer)
    # So, now we can return True
    return True
...