鱼C论坛

 找回密码
 立即注册
查看: 1004|回复: 3

[已解决]这个 第三次输入正确时 还会提示超过三次 怎么搞

[复制链接]
发表于 2019-5-1 22:44:59 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
下面代码
import random
yes = random.randint(1,10)
guess = 0
ls = 0
print("欢迎来到猜数字小游戏!")
print("答案在1~10之间!")
print("你只有三次机会哦!")
while (guess != yes) and (ls < 3):
     guess = int(input("请输入一个数字"))
     if guess == yes:
        print('恭喜你,答对了')
     elif guess > yes:
        print('哎呀,大了大了')
     elif guess < yes:
        print('哎呀,小了小了')
     ls = ls + 1            
if ls == 3:
     print ('超过三次啦,不和你玩了')

问题是倒数第二行代码吗?还是Is = Is +1的位置?可Is = Is +1放到大了下面,数字小了就没有限制了,这咋整啊?新人初学第二天。
最佳答案
2019-5-1 23:24:08
本帖最后由 jackz007 于 2019-5-1 23:30 编辑

    其原因是这些代码逻辑有问题,猜对和猜错其实就是 if 和 else 的问题,猜错以后,也是 if 猜大 和 else 的问题,没有那么多的 elif
  1.      if guess == yes:
  2.         print('恭喜你,答对了')
  3.      elif guess > yes:
  4.         print('哎呀,大了大了')
  5.      elif guess < yes:
  6.         print('哎呀,小了小了')
  7.      ls = ls + 1            
  8. if ls == 3:
  9.      print ('超过三次啦,不和你玩了')
复制代码

    应该改成这样
  1.      if guess == yes:                        # 如果猜对
  2.         print('恭喜你,答对了')
  3.      else:                                   # 否则
  4.         ls += 1                              # 错误计数加 1
  5.         if ls < 3:                           # 如果错误次数少于 3 次就显示提示信息,否则,就要退出循环了,提示就没有意义了
  6.             if guess > yes:                  # 如果猜大了
  7.                 print('哎呀,大了大了')
  8.             else:                            否则
  9.                 print('哎呀,小了小了')
  10.         else:                                # 猜错次数已经达到了 3 次,
  11.             print ('超过三次啦,不和你玩了')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-1 23:06:08 | 显示全部楼层
你的if ls == 3:
     print ('超过三次啦,不和你玩了')
是放在最后,所以循环执行完后不管有没有猜对都会执行这段代码
修改为:
  1. import random
  2. yes = random.randint(1,10)
  3. guess = 0
  4. ls = 0
  5. print("欢迎来到猜数字小游戏!")
  6. print("答案在1~10之间!")
  7. print("你只有三次机会哦!")
  8. while (guess != yes) and (ls < 3):
  9.      guess = int(input("请输入一个数字"))
  10.      if guess == yes:
  11.         print('恭喜你,答对了')
  12.      elif guess > yes:
  13.         print('哎呀,大了大了')
  14.      elif guess < yes:
  15.         print('哎呀,小了小了')
  16.      ls = ls + 1            
  17. if (guess != yes) and (ls == 3):
  18.      print ('超过三次啦,不和你玩了')


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-1 23:24:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-5-1 23:30 编辑

    其原因是这些代码逻辑有问题,猜对和猜错其实就是 if 和 else 的问题,猜错以后,也是 if 猜大 和 else 的问题,没有那么多的 elif
  1.      if guess == yes:
  2.         print('恭喜你,答对了')
  3.      elif guess > yes:
  4.         print('哎呀,大了大了')
  5.      elif guess < yes:
  6.         print('哎呀,小了小了')
  7.      ls = ls + 1            
  8. if ls == 3:
  9.      print ('超过三次啦,不和你玩了')
复制代码

    应该改成这样
  1.      if guess == yes:                        # 如果猜对
  2.         print('恭喜你,答对了')
  3.      else:                                   # 否则
  4.         ls += 1                              # 错误计数加 1
  5.         if ls < 3:                           # 如果错误次数少于 3 次就显示提示信息,否则,就要退出循环了,提示就没有意义了
  6.             if guess > yes:                  # 如果猜大了
  7.                 print('哎呀,大了大了')
  8.             else:                            否则
  9.                 print('哎呀,小了小了')
  10.         else:                                # 猜错次数已经达到了 3 次,
  11.             print ('超过三次啦,不和你玩了')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-1 23:37:03 From FishC Mobile | 显示全部楼层
19304270021304 发表于 2019-5-1 23:06
你的if ls == 3:
     print ('超过三次啦,不和你玩了')
是放在最后,所以循环执行完后不管有没有猜对都 ...

感谢!!!问题已经解决,可还有一个小问题,我去琢磨琢磨
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-3 08:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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