python第四讲课后习题_while用法問題
本帖最后由 theoderic 于 2017-10-18 12:00 编辑结论:请大大帮忙看,我自己解释的while循环是否正确
原因:不了解实际循环,跑的顺序。已经爬文与上网找资料,但仍似懂非懂;
问题:
如下例:
While A:
while a:
while b;
while c:
内循环是否是先跑完while a,直到a = False后再跑 while b;while b = False 才跑while c 呢??
---------------------------------------------------------------------------------------------------------------------------
自行解釋的部分為紅色字:
temp = input('请输入一个整数:')
number = int(temp)
while number: #当WHILE number =0 为Fales時,number循环停止。
i = number - 1 #i循环设定i = number -1
while i: #当i循环 i =0,为Fales,i循环停止
print(' ', end = '')#当i 跑第一次时,先空格,不跳行。
i = i - 1 #i循环每跑一次,则i 另外被赋值 i - 1
------继续用第一次设定的number值,执行完I循环完毕后,再跑第一次设定的number值,跑J循环-----
j = number #设定j= number
while j: #当WHILE j= 0时,为Fales,J循环停止
print('*', end = '')#接着i圈跑第一次时,打印*,不跳行。
j = j - 1 #j循环每跑一次,则i 另外被赋值j - 1
- ----继续用第一次设定的number值,执行完J循环完毕后,再跑第一次设定的number值,跑number循环-----
print() #number循环,打印跳行
number = number - 1 #number循环每跑一次,则number另外被赋值number - 1
- ----回到全区While跑第二次设定的number值-----
如输入 number = 2
1.number循环 number = 2
---->i循环(因i =number-1, whilei = 1为真,故打印空格(同一LINE,接着下一j循环))
---->j循环(因j = number ,while j = 2为真,故打印*(并接着number循环));并将j = j -1;
---->j循环(因j = j -1 故while j = 1为真,故打印*(并接着number循环));并将j = j -1;
---->j循环(因j = j -1 故while j = 0为假,故停止循环
---->number改为 mumber -1 ,故继续number跑第2次
2.number循环 number = 1
---->i循环(因i =number-1, whilei = 0为假,故停止循环,并进行J循环
---->j循环(因j = number ,while j = 1为真,故打印*(不跳行,继续J循环);并将j = j -1;
---->j循环(因j = j -1 故while j = 0为假,故不打印
---->j循环(因j = j -1 故while j = 0为假,故停止循环
---->number改为 mumber -1 ,继续number跑第3次
3.number循环 number = 0,故停止循环
>>>>
LINE1._**
LINE2.*
感謝!! While A:
while a:
while b;
while c:
内循环是否是先跑完while a,直到a = False后再跑 while b;while b = False 才跑while c 呢??
理解正确,就是这样。 是的没错,可以自己写代码验证一下 mass 发表于 2017-10-18 14:41
是的没错,可以自己写代码验证一下
感谢,有事先跑过代码。
只是一直觉得脑筋转不过去。
BngThea 发表于 2017-10-18 12:33
While A:
while a:
while b;
感谢!
theoderic 发表于 2017-10-18 21:26
感谢,有事先跑过代码。
只是一直觉得脑筋转不过去。
代码实际运行结果和自己想象的不一样,只有一个办法:以代码的实际运行结果为准 mass 发表于 2017-10-19 09:59
代码实际运行结果和自己想象的不一样,只有一个办法:以代码的实际运行结果为准
仔細想了一下您的解答,我發現我誤會您的意思了。
我以為運行結果自己分析,但應該是用print來查詢代碼跑的順序。
並嘗試在運行中帶入print解釋字串,更好理解了。非常謝謝您!!
代碼
i = 1
while i < 10:
while i % 2 == 1:
print(i)
print('我是奇數')
print('while i % 2 == 1:正在循環')
i += 1
print('因為是奇數為Ture,所以打印後,跳到外部循環')
else:
print(i)
print('因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數')
print('else循環完了,要跑while i <10了')
i += 1
print('外部循環節結束')
代碼運行結果:
1
我是奇數
while i % 2 == 1:正在循環
因為是奇數為Ture,所以打印後,跳到外部循環
2
因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數
else循環完了,要跑while i <10了
3
我是奇數
while i % 2 == 1:正在循環
因為是奇數為Ture,所以打印後,跳到外部循環
4
因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數
else循環完了,要跑while i <10了
5
我是奇數
while i % 2 == 1:正在循環
因為是奇數為Ture,所以打印後,跳到外部循環
6
因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數
else循環完了,要跑while i <10了
7
我是奇數
while i % 2 == 1:正在循環
因為是奇數為Ture,所以打印後,跳到外部循環
8
因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數
else循環完了,要跑while i <10了
9
我是奇數
while i % 2 == 1:正在循環
因為是奇數為Ture,所以打印後,跳到外部循環
10
因為不是奇數,跑內部while,因不等於1,故不打印;然後跑else,表示我是偶數
else循環完了,要跑while i <10了
外部循環節結束
theoderic 发表于 2017-10-19 13:21
仔細想了一下您的解答,我發現我誤會您的意思了。
我以為運行結果自己分析,但應該是用print來查詢代碼 ...
我一开始学的时候好多想不明白的地方,把自己的想法强加到编程语言作者身上,越学越迷糊,后来见见明白了学编程也是接受别人思想的过程,和作者想法一样的地方自然再好不过,和作者想法不一样的地方只能顺从,学编程也是一种被洗脑的过程…… 感谢楼主的解释!!!
页:
[1]