在循环语句中,print的位置缩进,运行结果为什么会这样的?

来源:3-15 三种常用生成式

刘振铭

2019-04-11 18:03:31

# 第一种情况

set1 = set()

for i in range(1,4):
   for j in range(1,4):
       if i == j:
           set1.add(i*j)
           print(set1)

# 第二种情况

set1 = set()
for i in range(1,4):
   for j in range(1,4):
       if i == j:
           set1.add(i*j)
       print(set1)

# 第三种情况

set1 = set()
for i in range(1,4):
   for j in range(1,4):
       if i == j:
           set1.add(i*j)

print(set1)

写回答

1回答

时间,

2019-04-11

同学,你好,分析如下:

第一种情况:每次if条件成立时会执行print语句

1、i = 1时

    1)j = 1,条件成立,执行set1.add(i*j)即1*1,并输出set1的值

    2)j = 2,及j = 3条件不成立不会输出,此时set1的值为{1}

2、i = 2时    

    1)j = 1,if条件不成立,执行下一次循环

    2)j = 2,if条件成立,执行set1.add(i*j)即2*2,并输出set1的值{1, 4}

    3)j = 3,条件不成立,执行外层循环

3、i = 3时

    1)j = 1,j = 2,if条件不成立,执行下一次循环

    2)j = 3,if条件成立,执行set1.add(i*j)即3*3,并输出set1的值{1, 4, 9}

第二种情况:if条件不管成立与否都会执行print语句,循环执行9次,print输出也会是9次

1、i = 1时

    1)j = 1,条件成立,执行set1.add(i*j)即1*1,并输出set1的值{1}

    2)j = 2,j = 3,条件不成立也会执行print语句,此时控制台会输出三次{1}

2、i = 2时    

    1)j = 1,if条件不成立,执行print语句,此时控制台会输出四次{1}

    2)j = 2,if条件成立,执行set1.add(i*j)即2*2,并输出set1的值{1, 4}

    3)j = 3,条件不成立,执行print语句,此时控制台会输出两次{1, 4}

3、i = 3时

    1)j = 1,j = 2,if条件不成立,执行print语句输出set1的值{1, 4},此时控制台会输出四次{1, 4}

    2)j = 3,if条件成立,执行set1.add(i*j)即3*3,并输出set1的值{1, 4, 9}

第三种情况:

当外层循环执行结束后才会执行print语句,会直接输出set1的值{1, 4, 9}

同学可以在debug模式下测试一下会更方便理解。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~~

5

0 学习 · 8160 问题

查看课程