关于乘法表中while嵌套循运行顺序的不解
代码例子罗列如下:i = 1
while i <= 9: ##################①
j = 9 ##################②
while j >= i: ##################③
print(j, "*", i, "=", j * i, end=' ') ##################④
j -= 1 ##################⑤
print() ##################⑥
i += 1 ##################⑦
运行处的结果为:
9 * 1 = 9 8 * 1 = 8 7 * 1 = 7 6 * 1 = 6 5 * 1 = 5 4 * 1 = 4 3 * 1 = 3 2 * 1 = 2 1 * 1 = 1
9 * 2 = 18 8 * 2 = 16 7 * 2 = 14 6 * 2 = 12 5 * 2 = 10 4 * 2 = 8 3 * 2 = 6 2 * 2 = 4
9 * 3 = 27 8 * 3 = 24 7 * 3 = 21 6 * 3 = 18 5 * 3 = 15 4 * 3 = 12 3 * 3 = 9
9 * 4 = 36 8 * 4 = 32 7 * 4 = 28 6 * 4 = 24 5 * 4 = 20 4 * 4 = 16
9 * 5 = 45 8 * 5 = 40 7 * 5 = 35 6 * 5 = 30 5 * 5 = 25
9 * 6 = 54 8 * 6 = 48 7 * 6 = 42 6 * 6 = 36
9 * 7 = 63 8 * 7 = 56 7 * 7 = 49
9 * 8 = 72 8 * 8 = 64
9 * 9 = 81
不懂的问题罗列如下:
1、对于这种存在嵌套循环的语句应当如何分析它的运行顺序?以上面的乘法表例子的代码来举例分析。
第一种假设:对于嵌套循环语句的运行程序的顺序是:从最内部的循环语句开始分析并且一直运行到内部循环的语句不能再进行循环为止,然后才开始分析外一层的循环语句吗?比如上述例子中,先从①到②到③到④到⑤再到③,直到③循环完毕,再从⑤到⑥到⑦到①。因为③是最后一个循环语句部分,所以是不是当 j = 9 1 = i ,又因为 j > i,所以打印④ j * i ,然后⑤ j = j -1 j= 8.请重点注意这里,此时⑥ i = i +1 这个语句并没有运行下去,而是 当 j = 8 时,它又回到了 ③while j >= 1 的这个循环语句中,直到当 while j >= i 为 Flase 时,然后程序才开始去 运行 print( ) 和 i = i +1.然后又回到最初的循环语句 while i <= 9 这个循环部分中。
结论,所以我推测,对于嵌套循环语句的运行顺序,应该是先从最内部的循环语句开始。(不知道我的分析是否正确?)
第二种假设:对于嵌套循环语句的运行程序的顺序是:所有的循环语句直接依次往下运行,比如从①到②到③到④到⑤到⑥到⑦再到①。但是这样会有一个问题,如果 j = 9 1 = i ,又因为 j > i,所以打印④ j * i ,然后⑤ j = j -1 j= 8.请重点注意这里,如果运行到⑤时,但并不返回③中,而是继续执行到⑥到⑦,i = i +1 ,此时 i = 2, 再到①到②到③中,因 ①中,i < 9,所以 j = 9。又因为 前述中 j = 8,此时 ⑤这部程序失去了意义。 到④时,j = 9 i =2,j * i = 18.运行到此时可以发现与答案给出的顺序相对比来看。(答案的顺序为: 9 * 1 = 9 8 * 1 = 8.而依据第二种假设的顺序得出的答案为: 9 * 1 = 9 9 * 2 = 18. )
结论:所以我推测,第二种假设得出的顺序似乎不合乎逻辑。即便合乎逻辑,也不属于答案给出的计算要求。(我也不知道我的分析是否存在逻辑错误或者语法错误,望老师指正。)
2、对于第⑥步骤中的print( ) ,我不明白这个单独的 print ( ),在程序的运行中到底是起着什么样的作用?
3,麻烦哪位老师耐心的给我讲下关于嵌套循环语句中,关于每一个循环模块中的具体分析顺序,谢谢!!! Python 只会从上往下执行 我只能说清楚print()是用来换行的,其他的说不清 本帖最后由 小伤口 于 2020-12-13 13:30 编辑
i = 1
while i <= 9: #第一个while判断i是否小于等于9
j = 9
while j >= i: #如果第一个while成立进入第二个while
print(j, "*", i, "=", j * i, end=' ') #打印j*i
j -= 1
print()
i += 1
#实现原理是进入第一个while循环后进入第二个while循环只有在第二while循环为false之后才会跳出来
#继续循环第一个while循环,第一个while循环为false时。程序结束。
#实现步骤就是第一个while循环使j=9 i=1 进入第二个while循环即9*1,之后j-=1继续
#while循环即9*1 8*1 7*1等等,直到j=0第二个while循环结束又进入第一个while循环i=2
#j重新赋值为9继续进入第二个while循环继续像刚才一样如此重复
小伤口 发表于 2020-12-13 13:29
1、是不是所有的嵌套循环语句都是这种逻辑来分析的?
2、单纯的一个 print( ) 表示什么意思?比如在本例子中的这种。。。 本帖最后由 小伤口 于 2020-12-13 14:01 编辑
Fring 发表于 2020-12-13 13:48
1、是不是所有的嵌套循环语句都是这种逻辑来分析的?
2、单纯的一个 print( ) 表示什么意思?比如在本例 ...
1 反正只要记住无论有多少个while 只有这个while循环为false时才会跳出这个while的框架否则就一直循环
2 如上面所说就是换行我也经常这样搞{:10_256:} Fring 发表于 2020-12-13 13:48
1、是不是所有的嵌套循环语句都是这种逻辑来分析的?
2、单纯的一个 print( ) 表示什么意思?比如在本例 ...
你可以把print()去掉有什么变化就知道它有啥作用了
Fring 发表于 2020-12-13 13:48
1、是不是所有的嵌套循环语句都是这种逻辑来分析的?
2、单纯的一个 print( ) 表示什么意思?比如在本例 ...
有帮助的话给个最佳吧{:10_256:} 好的,可以 Fring 发表于 2020-12-13 13:48
1、是不是所有的嵌套循环语句都是这种逻辑来分析的?
2、单纯的一个 print( ) 表示什么意思?比如在本例 ...
print语句中(j ,"*",i,"=",j*i,end=" ")
例如9 * 4 =36
9表示j "*"=乘号 4表示i 36表示 j*iend=“”表示空格
页:
[1]