Не понимаю почему не работает логическое ИЛИ
В firstfold остается один елемент - 6 и в 12 строке elif len(secondfold) >= 1 or len(firstfold) >= 1: surject = False должно выполнится условие surject = False, но оно не выполняется, почему?
firstfold = [1, 2, 3, 4, 5, 6]
secondfold = [1, 2, 3, 4, 5]
for i in firstfold.copy():#удаляет общее елементы
if i in secondfold:
try:
firstfold.remove(i)
secondfold.remove(i)
except ValueError: continue
print(firstfold, secondfold)
if len(secondfold) == 0 or len(firstfold) == 0: surject = True
elif len(secondfold) >= 1 or len(firstfold) >= 1: surject = False
print(surject)
Ответы (1 шт):
if len(secondfold) == 0 or len(firstfold) == 0:
surject = True
elif len(secondfold) >= 1 or len(firstfold) >= 1:
surject = False
давайте разбираться
во первых что надо знать - как только выполняется условие, остальные условия не рассматриваются
итак в начале len(firstfold) = 1, len(secondfold) = 0
начинает проверяться в if
if len(secondfold) == 0 or len(firstfold) == 0:
первая часть условия
len(secondfold) == 0
оно истинное (True)
по идее на этом проверка заканчивается, потому что значение второй части условия
len(firstfold) == 0
не важна
и выполняется код:
surject = True
поскольку первое условие выполнено (истинно), то второе условие (в ifelse) уже не рассматривается и код под условием не выполняется
P.S.
кстати ваш код можно было бы реализовать так:
firstfold = [1, 2, 3, 4, 5, 6]
secondfold = [1, 2, 3, 4, 5, 7]
arr1 = [i for i in firstfold if i not in secondfold]
arr2 = [i for i in secondfold if i not in firstfold]
firstfold, secondfold = arr1, arr2
дешево и сердито :)
или даже так:
firstfold = [1, 2, 3, 4, 5, 6]
secondfold = [1, 2, 3, 4, 5, 7]
firstfold, secondfold = set(firstfold).difference(secondfold), set(secondfold).difference(firstfold)