鱼C论坛

 找回密码
 立即注册
查看: 2695|回复: 10

[已解决]关于猜数字游戏,麻烦大神帮我看看循环判断

[复制链接]
发表于 2016-10-19 11:09:46 | 显示全部楼层 |阅读模式

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

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

x
郁闷了,这段代码运行出来,不管输入什么,老是下面的输出 求救啊


代码附上,求大神啊

◇---------------◇|我来想,你来猜|◇---------------◇

我想到了一个1~9之间的整数,你觉得是:5
温馨提示:
        请输入1,2,3,4,5,6,7,8,9中的任意一个数!
        你还有2次机会!

抓住机会,再猜一次:8
温馨提示:
        请输入1,2,3,4,5,6,7,8,9中的任意一个数!
        你还有1次机会!

抓住机会,再猜一次:7
温馨提示:
        请输入1,2,3,4,5,6,7,8,9中的任意一个数!
        你还有0次机会!

抓住机会,再猜一次:2
游戏次数已经用完!~
游戏结束!

我想猜3次,无辜冒出来4次......

  1. import random

  2. print("◇---------------◇|我来想,你来猜|◇---------------◇\n")
  3. secret = random.randint(1,9)
  4. answer = input("我想到了一个1~9之间的整数,你觉得是:")
  5. count = 3

  6. while (answer != secret) and (count>0):
  7.         
  8.         if isinstance(answer,int) == True:
  9.                
  10.                 if answer > secret:
  11.                         count -= 1
  12.                         print("温馨提示:\n\t猜的有点大!你还有%s次机会!\n" % count)
  13.                         answer = input("抓住机会,再猜一次:")
  14.                
  15.                 elif answer < secret:
  16.                         count -= 1
  17.                         print("温馨提示:\n\t猜的有点小!你还有%s次机会!\n" % count)
  18.                         answer = input("抓住机会,再猜一次:")
  19.                         
  20.         elif isinstance(answer,int) == False:
  21.                
  22.                 count -= 1
  23.                 print("温馨提示:\n\t请输入1,2,3,4,5,6,7,8,9中的任意一个数!\n\t你还有%s次机会!\n" % count)
  24.                 answer = input("抓住机会,再猜一次:")
  25.                
  26.         if answer == secret:
  27.                 print("心有灵犀一点通啊!~")
  28.         elif count <= 0:
  29.                 print("游戏次数已经用完!~")
  30.                
  31. print("游戏结束!")
复制代码
最佳答案
2016-10-19 16:00:53
while (answer != secret) and (count>0),你是猜一个数然后 判断是否count>0此时count=3,判断是否正确然后count-1等于2,然后在猜一个数,再判断是否count>0此时count=2,判断是否正确然后count-1等于1,然后在猜一个数,再判断是否count>0此时count=1,判断是否正确然后count-1等于0,然后在猜一个数,再判断是否count>0此时count=0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-19 11:11:06 | 显示全部楼层
昨天也做过一个,虽然运行没问题,但是不太健壮。修改了一下变成这样的了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-19 15:41:15 | 显示全部楼层
input获得的输入是字符串类型的,所以总是执行下面的这里
  1. elif isinstance(answer,int) == False:
  2.                
  3.                 count -= 1
  4.                 print("温馨提示:\n\t请输入1,2,3,4,5,6,7,8,9中的任意一个数!\n\t你还有%s次机会!\n" % count)
  5.                 answer = input("抓住机会,再猜一次:")
复制代码

而出现4次是因为每次COUNT计数减1后都会出现answer = input("抓住机会,再猜一次:"),让用户重新输入。
当count = 1 进入循环时,减1后,count = 0,但是执行了answer = input("抓住机会,再猜一次:")。
这个重新输入应该放在判断COUNT是否为0之后。只有COUNT大于0才出现重新输入。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-19 16:00:53 | 显示全部楼层    本楼为最佳答案   
while (answer != secret) and (count>0),你是猜一个数然后 判断是否count>0此时count=3,判断是否正确然后count-1等于2,然后在猜一个数,再判断是否count>0此时count=2,判断是否正确然后count-1等于1,然后在猜一个数,再判断是否count>0此时count=1,判断是否正确然后count-1等于0,然后在猜一个数,再判断是否count>0此时count=0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-19 16:04:25 | 显示全部楼层
  1. count = 2

  2. while (answer != secret) and (count>0):
  3.         count-=1
复制代码


将剩余的count-=1全部去掉,改成这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-19 17:51:37 | 显示全部楼层
fendoutaozi 发表于 2016-10-19 16:04
将剩余的count-=1全部去掉,改成这样

感觉好像不行阿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-19 19:02:31 | 显示全部楼层
Kotori 发表于 2016-10-19 15:41
input获得的输入是字符串类型的,所以总是执行下面的这里

而出现4次是因为每次COUNT计数减1后都会出现an ...

谢谢你的耐心讲解,我再试试!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-19 19:03:02 | 显示全部楼层
fendoutaozi 发表于 2016-10-19 16:00
while (answer != secret) and (count>0),你是猜一个数然后 判断是否count>0此时count=3,判断是否正确然后 ...

谢谢,我再试试~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-20 09:05:37 | 显示全部楼层
猜不对的情况下加上countinue,把count-=1,放在while循环下面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-20 09:33:39 | 显示全部楼层
我之前说错了4楼说对了,你把while循环里面的conut>0,改成count>1就好了,三次没问题,我试过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-20 19:14:50 | 显示全部楼层
MaoYi62498 发表于 2016-10-20 09:33
我之前说错了4楼说对了,你把while循环里面的conut>0,改成count>1就好了,三次没问题,我试过了

收到,我一会试试,谢谢指正~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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