鱼C论坛

 找回密码
 立即注册
查看: 1943|回复: 4

[已解决]关于while循环次数的疑问

[复制链接]
发表于 2017-3-14 10:50:15 | 显示全部楼层 |阅读模式

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

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

x
如下图所示的代码,是猜字谜游戏。
赋值
i=3
while i>=2
i=i-1

不明白为什么while循环会进行三次。
按照我的理解,i=3时候, i>=2成立,i=2
然后,i=2, i>=2成立,i=1.

i>=2不成了,循环结束,因此智慧循环2次就结束了。
粘贴图片.png
最佳答案
2017-3-14 11:10:59
while循环最多进行了两次,并且要当guess不等于secret才会进行循环,如果你仔细看代码就会发现'if guess==secret:'及其下边的语句不在while循环的缩进范围内,即不属于while循环的代码块,也就是说当i=1,跳过while循环,进而执行'if guess==secret:',猜中了恭喜,猜不中就拜拜了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-14 10:58:52 | 显示全部楼层
明白了,第一次的输入,i并没有参与进去,第一次的机会利用的是i=3上面的那个
“”temp=input('请输入一个数字,看看是不是正确答案:')“”
所以第二次输入数字,执行的是i=3,i-=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-14 11:10:59 | 显示全部楼层    本楼为最佳答案   
while循环最多进行了两次,并且要当guess不等于secret才会进行循环,如果你仔细看代码就会发现'if guess==secret:'及其下边的语句不在while循环的缩进范围内,即不属于while循环的代码块,也就是说当i=1,跳过while循环,进而执行'if guess==secret:',猜中了恭喜,猜不中就拜拜了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-14 11:44:21 | 显示全部楼层
18813034116 发表于 2017-3-14 11:10
while循环最多进行了两次,并且要当guess不等于secret才会进行循环,如果你仔细看代码就会发现'if guess==s ...

我的理解是,while循环确实只进行了两次,但是加上最上面的:temp=input('请输入一个数字,看看是不是正确答案:')这一次输入机会,总共形成了3次机会,结果误以为是循环了3次。

另外,对这个游戏进行了一些修改,因为上面图片的代码,运行起来有bug。
1.即使猜对了,会提示:恭喜恭喜/三次机会没有了/游戏结束。
2.当输入的值超过了random.randint(1,10)的范围例如输入一个11,还是会提示大了大了。实际上这样做是错误的,应该提示用户请输入一个什么范围的数字。
下面是我修改后的代码:
import random
secret=random.randint(1,5)
print('来玩一个猜字谜游戏吧,猜猜我想的数字是什么?')
temp=input('请输入一个数字,看看是不是正确答::')
guess=int(temp)
i=3
while guess != secret and i>=2:
    if guess>secret and guess<6:
        temp=input('猜的有点大,再输入一次试试:')
        guess=int(temp)
    else:
        if guess>5:
            print('你输入的数字有误!')
            temp=input('请输入一个1到5之间的数字:')
            guess=int(temp)
        else:
            temp=input('猜的有点小,再输入一次试试:')
            guess=int(temp)
if guess==secret:
    print('不错不错,猜对了,真棒!')
if i<2:
    print('三次机会用完了,没机会了!')
print('游戏结束,拜拜')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-14 12:59:55 | 显示全部楼层
上面的程序差一行,少一个i=i-1.或者i-=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 09:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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