鱼C论坛

 找回密码
 立即注册
查看: 2209|回复: 8

python第四讲课后习题_while用法問題

[复制链接]
发表于 2017-10-18 11:51:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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, while  i = 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, while  i = 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.*


感謝!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-18 12:33:45 | 显示全部楼层
While A:
        while a:
        while b;
        while c:
内循环是否是先跑完while a,直到a = False后再跑 while b;while b = False 才跑while c 呢??

理解正确,就是这样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-18 14:41:00 | 显示全部楼层
是的没错,可以自己写代码验证一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-18 21:26:56 | 显示全部楼层
mass 发表于 2017-10-18 14:41
是的没错,可以自己写代码验证一下

感谢,有事先跑过代码。
只是一直觉得脑筋转不过去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-18 21:27:28 | 显示全部楼层
BngThea 发表于 2017-10-18 12:33
While A:
        while a:
        while b;

感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 09:59:33 | 显示全部楼层
theoderic 发表于 2017-10-18 21:26
感谢,有事先跑过代码。
只是一直觉得脑筋转不过去。

代码实际运行结果和自己想象的不一样,只有一个办法:以代码的实际运行结果为准
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-19 13:21:53 | 显示全部楼层
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了
外部循環節結束

   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 17:17:41 | 显示全部楼层
theoderic 发表于 2017-10-19 13:21
仔細想了一下您的解答,我發現我誤會您的意思了。
我以為運行結果自己分析,但應該是用print來查詢代碼 ...

我一开始学的时候好多想不明白的地方,把自己的想法强加到编程语言作者身上,越学越迷糊,后来见见明白了学编程也是接受别人思想的过程,和作者想法一样的地方自然再好不过,和作者想法不一样的地方只能顺从,学编程也是一种被洗脑的过程……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 22:53:05 | 显示全部楼层
感谢楼主的解释!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 06:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表