Помогите разобраться в работе логического оператора (простая задача)

Bened

Новичок
Пользователь
Июн 21, 2020
4
1
3
Есть условие:

1. Размер команды А (переменная team_a)
2. Размер команды B (переменная team_b)
3. В эту переменную должно записаться число, которое будет делиться на team_a И team_b без остатка (переменная pieces_cake ).

Создаю цикл While, но почему-то он прекращает добавлять к переменной-счетчик +1, когда достигает значения одной из переменной, и игнорирует второе условие, которые указано через and. Вот, что получается:



Код:
a_team = 7
b_team = 5
pieces_cake = 1

while pieces_cake % a_team != 0 and pieces_cake % b_team != 0:
  pieces_cake += 1

print(pieces_cake)    #==> 5

Подскажите, почему игнорируется условие and?? Прописано, чтобы считчик добавлял +1, пока число не будет делиться одновременно и на team_a и на team_b. Я так понимаю дело в приоритете, но не понимаю ошибку.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Подскажите, почему игнорируется условие and?? Прописано, чтобы считчик добавлял +1, пока число не будет делиться одновременно и на team_a и на team_b. Я так понимаю дело в приоритете, но не понимаю ошибку.
Цикл выполняется пока условие True когда переменная pieces_cake становится равной 5 условие pieces_cake % b_team != 0 становится False и общее условие цикла тоже становится False, так как True and False == False. Поэтому цикл останавливается несмотря на то что первое условие True.
Чтобы в коде учитывались оба условия нужно вместо and использовать or:
Python:
while pieces_cake % a_team != 0 or pieces_cake % b_team != 0:
 
  • Мне нравится
Реакции: Student и Bened

Иван

Новичок
Пользователь
Июн 21, 2020
1
0
1
Есть условие:

1. Размер команды А (переменная team_a)
2. Размер команды B (переменная team_b)
3. В эту переменную должно записаться число, которое будет делиться на team_a И team_b без остатка (переменная pieces_cake ).

Создаю цикл While, но почему-то он прекращает добавлять к переменной-счетчик +1, когда достигает значения одной из переменной, и игнорирует второе условие, которые указано через and. Вот, что получается:



Код:
a_team = 7
b_team = 5
pieces_cake = 1

while pieces_cake % a_team != 0 and pieces_cake % b_team != 0:
  pieces_cake += 1

print(pieces_cake)    #==> 5

Подскажите, почему игнорируется условие and?? Прописано, чтобы считчик добавлял +1, пока число не будет делиться одновременно и на team_a и на team_b. Я так понимаю дело в приоритете, но не понимаю ошибку.


Когда pieces_cake будет 5
pieces_cake % b_team -> 5 % 5 = 0 != 0 False
 

Bened

Новичок
Пользователь
Июн 21, 2020
4
1
3
Когда pieces_cake будет 5
pieces_cake % b_team -> 5 % 5 = 0 != 0 False
Но на 7 (team_a) 5 не делится без остатка. Почему игнорируется это условие?
 

Bened

Новичок
Пользователь
Июн 21, 2020
4
1
3
Цикл выполняется пока условие True когда переменная pieces_cake становится равной 5 условие pieces_cake % b_team != 0 становится False и общее условие цикла тоже становится False, так как True and False == False. Поэтому цикл останавливается несмотря на то что первое условие True.
Чтобы в коде учитывались оба условия нужно вместо and использовать or:
Python:
while pieces_cake % a_team != 0 or pieces_cake % b_team != 0:

Большое вам спасибо! :)
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов