• Предмет: Информатика
  • Автор: nikolmakisheva
  • Вопрос задан 6 лет назад

НАПИШИТЕ ПРОГРАММУ НА ЯЗЫКУ ПАЙТОН.
Даны натуральные числа от 35 до 87. Выведите на консоль те из них, которые при делении на 7 дают остаток 1, 2 и 5. Найдите ошибку в данном фрагменте программы:
for i in range (35, 88):
if ( i % 7 == 1) & ( i % 7 == 2) & ( i % 7 == 5):
print(i)

!!! Дам 40 баллов, буду очень благодарна за скорую помощь !!!


valgrisa: if ( i % 7 == 1) or ( i % 7 == 2) or ( i % 7 == 5):
nikolmakisheva: прости, но это не верно. мне нужно чтобы пайтон одобрил и вывел числа, которые при делении на 7 дают остаток 1, 2 и 5
valgrisa: 1 число при деление на 7 дает 1 остаток
либо выводит числа которые дают в остатке 1 или 2 или 5
либо ничего
nikolmakisheva: ну так оно не выводит то что мне нужно. не могли бы вы проверить правильность этого? ведь у меня выдает ошибку
valgrisa: тут всё правильно кроме отступов, которых тут нет
но даже если добавить отступы, то программа ничего не выведет, т.к. невозможно одновременно получить 3 разных остатка от деления одного числа на другое число
(если 35разделить на 7, то остаток будет 0 всегда)
nikolmakisheva: огромное спасибо, уважаемый.

Ответы

Ответ дал: nikdissv
4

Ответ:

# Ошибка в знаке & - это битовое И, а надо использовать ИЛИ (битовый знак у него "|"). Но правильно будет использовать бинарный оператор или (or). В python есть ключевые слова or (или) и and (и).

# Правильный вариант программы будет (скобки здесь не обязательны, приоритеты у операций всё равно правильные):

for i in range (35, 88):

if i%7 == 1 or i%7 == 2 or i%7 == 5:

print(i)

# Можно также воспользоваться удобным функционалом языка, и написать это красивее и эффективнее:

for i in range(35, 88):

if i%7 in (1, 2, 5): # То бишь, если остаток 1, 3 или 5.

print(i)


nikolmakisheva: спасибо
Вас заинтересует