在循环语句中,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回答
同学,你好,分析如下:
第一种情况:每次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模式下测试一下会更方便理解。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~~
相似问题