Эта конкретная строка кода далека от моего понимания, что она делает?

if (i + j) % 8 in [1, 5]:

что означает эта строка кода и как она будет выполняться?

for i in range(8):
    for j in range(16):
        if (i + j) % 8 in [1, 5]:
            print('/', end = '')
% — это оператор по модулю, если остаток от деления (i+j)/8 равен 1 или 5, выполняется функция print().
ilja 22.05.2019 15:20

Вы изучили официальное руководство по Python и искали в документации различные существующие операторы?

bruno desthuilliers 22.05.2019 15:20

@ilja в python3, print() — это функция, а не оператор.

bruno desthuilliers 22.05.2019 15:20

@bruno destuilliers, конечно, ты прав :-)

ilja 22.05.2019 15:21
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
4
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Он проверяет, является ли i+j по модулю 8 1 или 5.

  • (i+j) возвращает свою сумму (очевидно)

  • % 8 возвращает по модулю 8. Например: 8 % 8 == 0, 9 % 8 == 1, 10 % 8 == 2 и т. д.

  • in [1, 5] проверяет, есть ли (i + j) % 8 результат в списке [1, 5] - равен ли он 1 или равен 5

Вот официальная документация Python по модулю оператор:

The % (modulo) operator yields the remainder from the division of the first argument by the second. The numeric arguments are first converted to a common type. A zero right argument raises the ZeroDivisionError exception. The arguments may be floating point numbers, e.g., 3.14%0.7 equals 0.34 (since 3.14 equals 4*0.7 + 0.34.) The modulo operator always yields a result with the same sign as its second operand (or zero); the absolute value of the result is strictly smaller than the absolute value of the second operand 1.

Вот официальная документация Python о "в" оператор:

The operators in and not in test for membership. x in s evaluates to True if x is a member of s, and False otherwise. x not in s returns the negation of x in s. All built-in sequences and set types support this as well as dictionary, for which in tests whether the dictionary has a given key. For container types such as list, tuple, set, frozenset, dict, or collections.deque, the expression x in y is equivalent to any(x is e or x == e for e in y).

For the string and bytes types, x in y is True if and only if x is a substring of y. An equivalent test is y.find(x) != -1. Empty strings are always considered to be a substring of any other string, so "" in "abc" will return True.

то есть i+j является одним из 1, 5, 9, 13, 17, 21. отличный ответ!

hiro protagonist 22.05.2019 15:22

in оператор (оператор членства): оператор «in» используется для проверки того, существует ли значение в последовательности или нет. Он оценивается как true, если он находит значение в указанной последовательности, и как false в противном случае.

Оператор % используется для деления по модулю.

Здесь (i+j)%8 возвращает значение от 0 до 7, так как это деление по модулю.

Но в коде результат деления по модулю проверяется в списке [1,5], есть он в нем или нет.

Если он присутствует в списке, мы выполняем оператор в условии if, иначе переходим к следующей итерации цикла.

Другие вопросы по теме