|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码例子罗列如下:
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,麻烦哪位老师耐心的给我讲下关于嵌套循环语句中,关于每一个循环模块中的具体分析顺序,谢谢!!!
本帖最后由 小伤口 于 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循环继续像刚才一样如此重复
复制代码
|
|