鱼C论坛

 找回密码
 立即注册
查看: 1676|回复: 6

[已解决]猜数字问题

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

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

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

x

哈咯!


我在做第四节课练习题的时候
我想利用代码实现两个功能:
1.只有五次猜数机会,超过五次立即自动退出
2.每一次猜数立即告知数字大了还是小了

但是我运行的时候碰到两个问题:
1.猜数超出五次还是可以运行
2.每次给出同一个数字,一开始说数字不对,但是最后忽然又对了,难道是背后的答案(secret)是每次都在改变的?

谢谢大神解答~~~

代码如下:

  1. import random
  2. secret = random.randint (1, 20)
  3. temp = input('Guess a number from 1 to 20:')
  4. guess = int(temp)
  5. i = 1
  6. while guess != secret and i <6:
  7.     if guess > secret:
  8.         print ('It is too big')
  9.     else:
  10.         print ('It is too small')
  11.     temp = input('Wrong answer, try again:')
  12.     guess = int(temp)
  13.     i = i + 1
  14. print('Yes it is right!')
  15. print('Game over!')
复制代码
最佳答案
2017-12-29 10:57:11
1.猜数超出五次还是可以运行
因为第11,12行在循环里面,每次循环过程中会接收下次的输入,第五次也是一样,但是第五次循环里面的输入(第六次输入的)没有其作用了,因为while循环条件失败
修改建议:在11,12行前面加上判断 if i<5:

2.每次给出同一个数字,一开始说数字不对,但是最后忽然又对了,难道是背后的答案(secret)是每次都在改变的?
因为跳出while循环后比如会执行第14行
修改建议,将14行对应的输出放到while循环中,并加上判断: if guess == secret:
Snipaste_2017-12-29_10-45-09.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-29 10:57:11 | 显示全部楼层    本楼为最佳答案   
1.猜数超出五次还是可以运行
因为第11,12行在循环里面,每次循环过程中会接收下次的输入,第五次也是一样,但是第五次循环里面的输入(第六次输入的)没有其作用了,因为while循环条件失败
修改建议:在11,12行前面加上判断 if i<5:

2.每次给出同一个数字,一开始说数字不对,但是最后忽然又对了,难道是背后的答案(secret)是每次都在改变的?
因为跳出while循环后比如会执行第14行
修改建议,将14行对应的输出放到while循环中,并加上判断: if guess == secret:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 11:40:07 | 显示全部楼层
BngThea 发表于 2017-12-29 10:57
1.猜数超出五次还是可以运行
因为第11,12行在循环里面,每次循环过程中会接收下次的输入,第五次也是一样 ...

谢谢解答!~

但是我还是有问题,试了很久
1. 貌似无法直接将if i < 5 直接插入11行前面,python应该无法接收两个并列在同一个层级的if吧

2. 没有明白为什么会自动跳出循环直接执行第14行,碰到了哪个条件使其直接跳出循环呢?

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

使用道具 举报

发表于 2017-12-29 11:56:12 | 显示全部楼层
heywilliam 发表于 2017-12-29 11:40
谢谢解答!~

但是我还是有问题,试了很久

1 任何语言的同一级的 if 都可以有无限个,python也不例外

2 因为14行缩进和while一致,那么while循环结束(不管怎么结束的,只要不是报错)后必然会执行14行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 14:10:20 | 显示全部楼层
BngThea 发表于 2017-12-29 11:56
1 任何语言的同一级的 if 都可以有无限个,python也不例外

2 因为14行缩进和while一致,那么while循环 ...

不好意思我还是没修改出来
你可以把改出来的代码给我看一下吗,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-29 14:19:24 | 显示全部楼层
heywilliam 发表于 2017-12-29 14:10
不好意思我还是没修改出来
你可以把改出来的代码给我看一下吗,谢谢!
  1. import random
  2. secret = random.randint (1, 20)
  3. temp = input('Guess a number from 1 to 20:')
  4. guess = int(temp)
  5. i = 1

  6. while guess != secret and i <6:
  7.     if guess > secret:
  8.         print ('It is too big')
  9.     else:
  10.         print ('It is too small')
  11.     if i < 5:
  12.         temp = input('Wrong answer, try again:')
  13.         guess = int(temp)
  14.     i = i + 1
  15.    
  16. if guess == secret:
  17.     print('Yes it is right!')
  18.    
  19. print('Game over!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 15:43:21 | 显示全部楼层

我又加强了一下代码 实现了每次提示剩余机会次数,以及chance和chances单复数的问题,感觉好棒哈哈哈

  1. import random
  2. secret = random.randint(1,20)
  3. i = 1
  4. temp = input("Please give any number in between 1 to 20:")
  5. guess = int(temp)
  6. while (guess != secret) and i <6:
  7.     #判断大小
  8.     if guess > secret:
  9.         print ("Number is too big")
  10.     else:
  11.         print("Number is too small")
  12.     #当剩下一次机会的时候chance显示为单数,当剩下0次机会的时候不重复显示提示
  13.     if (i != 4) and (i != 5):
  14.         print("You have", 5 - i, "chances left")
  15.     if i == 4:
  16.         print("You have 1 chance left")
  17.     #在机会还没用进的时候继续输入
  18.     if i < 5:
  19.         temp = input("Please try again:")
  20.         guess = int(temp)
  21.     #机会全部用尽提示
  22.     else:
  23.         print ("Chances are used up")
  24.     #计数器
  25.     i = i + 1
  26. if guess == secret:
  27.     print("Yes you are right!")
  28. print ("Game over!")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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