这行代码离我的理解还很远,这是做什么的?

0 python python-3.x

if (i + j) % 8 in [1, 5]:
Run Code Online (Sandbox Code Playgroud)

这行代码是什么意思,它将如何执行?

for i in range(8):
    for j in range(16):
        if (i + j) % 8 in [1, 5]:
            print('/', end = '')
Run Code Online (Sandbox Code Playgroud)

vur*_*mux 6

它检查i+j模8是1还是5。

  • (i+j) 返回其总和(显然)

  • % 8返回模 8。例如:8 % 8 == 0, 9 % 8 == 1, 10 % 8 == 2etc

  • in [1, 5]检查(i + j) % 8结果是否可以在列表中找到[1, 5]-等于1还是等于5

这是有关模运算符的官方Python文档:

%(取模)运算符从第一个参数除以第二个参数得出余数。首先将数字参数转换为通用类型。右零参数引发ZeroDivisionError异常。参数可以是浮点数,例如3.14%0.7等于0.34(因为3.14等于4 * 0.7 + 0.34。)模运算符始终产生与第二个操作数具有相同符号的结果(或为零);结果的绝对值严格小于第二个操作数1的绝对值。

这是有关“ in”运算符的官方Python文档:

运营商正在测试中,而未进行成员资格测试。如果x是s的成员,则x in s的结果为True,否则为False。x not in s返回x in s的取反。所有内置序列和集合类型都支持此功能以及字典,为此,它们会测试字典是否具有给定的键。对于列表,元组,集合,frozenset,dict或collections.deque等容器类型,y中的表达式x等于any(x为e或y中的e为x == e)。

对于字符串和字节类型,当且仅当x是y的子字符串时,y中的x才为True。等效测试为y.find(x)!= -1。空字符串始终被认为是任何其他字符串的子字符串,因此“ abc”中的“”将返回True。