fatima 发表于 2018-11-29 17:23:59

004讲改进我们的小游戏能否这样改

大家好,我今天听了004讲,觉得小甲鱼老师讲的那个while 循环下面包含了‘ guess == 8’ 不太能接受,所以我这样改进while循环。但是为什么输入其它数字后 再输入8,不能提示猜中的语句。恳请大家帮我看下是哪里出了问,谢谢!

temp = input ('猜猜小甲鱼心里现在想的是那个数字:')
guess = int (temp)
if guess == 8:
    print('你是小甲鱼心里的蛔虫吗?')
    print('猜中了也没有奖励!')
else :
    while guess != 8 :
      temp= input('哎呀,猜错了,请重新输入:')
      guess = int (temp)
      if guess > 8 :
            print ('哥,大了,大了!')
      else:
            print('嘿,小了,小了!')
print('不玩了,游戏结束!')

以上是代码部分,下面是模块运行显示的结果:
1.第一次输入 8:

猜猜小甲鱼心里现在想的是那个数字:8
你是小甲鱼心里的蛔虫吗?
猜中了也没有奖励!
不玩了,游戏结束!

2.多次猜测之后输入8:
猜猜小甲鱼心里现在想的是那个数字:6
哎呀,猜错了,请重新输入:4
嘿,小了,小了!
哎呀,猜错了,请重新输入:2
嘿,小了,小了!
哎呀,猜错了,请重新输入:7
嘿,小了,小了!
哎呀,猜错了,请重新输入:9
哥,大了,大了!
哎呀,猜错了,请重新输入:19
哥,大了,大了!
哎呀,猜错了,请重新输入:8
嘿,小了,小了!
不玩了,游戏结束!



塔利班 发表于 2018-11-29 17:28:36

因为你的猜中在if里,开始不猜中就没可能回if了,就只在else的while里循环

heidern0612 发表于 2018-11-29 17:30:16

if语句和else语句是并列的关系,只能进一个分支,就像河流似的,不能进了一个分支之后再回来进另外一个分支了。

我叫MD 发表于 2018-11-29 17:46:36

直接给你讲述你的第二个情况吧!

while guess != 8 :
      temp= input('哎呀,猜错了,请重新输入:')
      guess = int (temp)
      if guess > 8 :
            print ('哥,大了,大了!')
      else:
            print('嘿,小了,小了!')


当你第一次不输入8的时候,程序会直接进入这个部分进行循环,当在这个循环中输入8的时候,就会产生你说的那种情况

fatima 发表于 2018-11-29 17:52:51

谢谢你帮忙看问题并解答!
我思路是:等于8是不需要循环的,所以,不等于8的才要循环。
所以,if =8 ,直接游戏 结束,没问题。
else != 8 时,我用循环,但是问题来了
其实我说的重点应该是,我输入其他数字没问题,再输入8后,它的提示变成:
‘嘿,小了,小了!
不玩了,游戏结束!‘
根据我的代码,应该是提示    ’你不是小甲鱼肚子里的蛔虫吧,。。。,猜对了也。。。’和 ‘不玩了,游戏结束!‘

heidern0612 发表于 2018-11-29 18:08:16

fatima 发表于 2018-11-29 17:52
谢谢你帮忙看问题并解答!
我思路是:等于8是不需要循环的,所以,不等于8的才要循环。
所以,if =8 ,直 ...

那你就不要用while !=8来循环,你可以用while True, 遇到 ==8的情况直接break ,print。不等于8的情况下就一直循环判断不就行了么?

fatima 发表于 2018-11-29 18:10:54

我叫MD 发表于 2018-11-29 17:46
直接给你讲述你的第二个情况吧!




我明白你的意思了。谢谢你!
还有个问题,老师讲的while 的条件为什么是 ’guess != 8 ‘,然后里面还包含了’ guess == 8 ‘的情况 ,按while 规律,这个条件为false ,不执行操作 ,游戏直接结束才对。

fatima 发表于 2018-11-29 18:13:42

heidern0612 发表于 2018-11-29 18:08
那你就不要用while !=8来循环,你可以用while True, 遇到 ==8的情况直接break ,print。不等于8的情况下 ...

IT新手上路,没有学break .
多谢多谢!{:5_110:}

fatima 发表于 2018-11-29 18:16:30

塔利班 发表于 2018-11-29 17:28
因为你的猜中在if里,开始不猜中就没可能回if了,就只在else的while里循环

理解了, 谢谢!谢谢!谢谢!

heidern0612 发表于 2018-11-29 18:16:39

fatima 发表于 2018-11-29 18:13
IT新手上路,没有学break .
多谢多谢!

你都学到while了,break就不算超纲了。

fatima 发表于 2018-11-29 18:20:07

heidern0612 发表于 2018-11-29 18:16
你都学到while了,break就不算超纲了。

我只学了鱼C的Python课,他的0-4讲里还没涉及到break。这样也好,提前查下break的用法。
新手,崭新的手!{:5_109:}

,逗号, 发表于 2018-11-29 18:33:28

当时我也弄了半天,现在看到33讲,一起加油

heidern0612 发表于 2018-11-29 19:19:24

fatima 发表于 2018-11-29 18:20
我只学了鱼C的Python课,他的0-4讲里还没涉及到break。这样也好,提前查下break的用法。
新手,崭新的手 ...

加油吧,我也是新手,共同进步!

fatima 发表于 2018-11-29 19:43:10

,逗号, 发表于 2018-11-29 18:33
当时我也弄了半天,现在看到33讲,一起加油

才刚开始。
给自己打个气!
页: [1]
查看完整版本: 004讲改进我们的小游戏能否这样改