鱼C论坛

 找回密码
 立即注册
查看: 1138|回复: 7

[已解决]小白问一个猜数字游戏的问题

[复制链接]
发表于 2018-3-31 14:37:44 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 imspider 于 2018-3-31 14:36 编辑

我是一个编程小白,以前从来没有接触过编程,昨天晚上才开始学习小甲鱼的 Python 教程。

我学的很慢,从事本职工作的同时一边看课程,一边举一反三的写代码。今天才看到第 4 课。

第 4 课的内容是改进第 2 课的数字游戏,我按照老师的要求自己改进了。但我想进一步改进的时候卡在了某个地方,我本来想自己解决,找了些其它高手写的代码来看还是没弄懂,实在是我的编程基础太弱了。

以下是我的代码:
  1. import random
  2. secret = random.randint(1,10)
  3. times = 3
  4. temp = input('从1到10之间猜一个数字,你有3次机会:\n')
  5. guess = int(temp)

  6. while guess != secret and times > 1:
  7.     if guess > secret:
  8.         times = times -1
  9.         temp = input('大了,你还有' + str(times) + '次机会,重新输入:\n')
  10.         guess = int(temp)
  11.     else:
  12.         times = times -1
  13.         temp = input('小了,你还有' + str(times) + '次机会,重新输入:\n')
  14.         guess = int(temp)
  15. if times < 1:
  16.     print('机会用完,下次再来')
  17. if guess == secret:
  18.     print('对了')
  19. print('结束')
复制代码


这段代码运行后,第一次猜中、第一次猜错而第二次猜中、第一第二次都错而第三次猜中,都是正常的。

但三次都猜错的话,不会提示「机会用完,下次再来」,而是直接显示「结束」。我反复修改了很多次都不行。


                               
登录/注册后可看大图


请问我的代码问题出在哪里?

我这段代码有没有哪里需要改进的地方,比如可以更简洁一点。

非常感谢!
最佳答案
2018-3-31 14:59:40
  1. import random
  2. secret = random.randint(1,10)
  3. times = 4
  4. temp = input('从1到10之间猜一个数字,你有3次机会:\n')
  5. guess = int(temp)

  6. while times > 1:
  7.     times = times -1
  8.     if guess == secret:
  9.         print("对了")
  10.         break
  11.         
  12.     if guess > secret:        
  13.         temp = input('大了,你还有' + str(times) + '次机会,重新输入:\n')        
  14.     else:        
  15.         temp = input('小了,你还有' + str(times) + '次机会,重新输入:\n')

  16.     guess = int(temp)
  17.    
  18.     if times <= 1:
  19.         print('机会用完,下次再来')
  20.         break

  21.    
  22. print('结束')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-31 14:59:40 | 显示全部楼层    本楼为最佳答案   
  1. import random
  2. secret = random.randint(1,10)
  3. times = 4
  4. temp = input('从1到10之间猜一个数字,你有3次机会:\n')
  5. guess = int(temp)

  6. while times > 1:
  7.     times = times -1
  8.     if guess == secret:
  9.         print("对了")
  10.         break
  11.         
  12.     if guess > secret:        
  13.         temp = input('大了,你还有' + str(times) + '次机会,重新输入:\n')        
  14.     else:        
  15.         temp = input('小了,你还有' + str(times) + '次机会,重新输入:\n')

  16.     guess = int(temp)
  17.    
  18.     if times <= 1:
  19.         print('机会用完,下次再来')
  20.         break

  21.    
  22. print('结束')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 15:14:47 | 显示全部楼层

老哥稳,可是你的代码有个问题,前面一直猜错会猜 4 次才结束。


                               
登录/注册后可看大图


我把第三行的 times = 4 改为 times = 3 就是我要的猜三次结束了。

我再研究一下你的代码。非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 15:37:24 | 显示全部楼层

老哥,你这段代码还是有点问题,最后次机会明明都猜对了,还是会提示「机会用完,下次再来」。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 15:55:04 | 显示全部楼层
imspider 发表于 2018-3-31 15:37
老哥,你这段代码还是有点问题,最后次机会明明都猜对了,还是会提示「机会用完,下次再来」。

if times <= 1:
        print('机会用完,下次再来')
        break

放在  print("对了")
        break 后面看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 16:29:28 | 显示全部楼层

改过去就可以了,但为什么第三行 times 必须得是 4,我改成 3 就只能猜 2 次就结束了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 18:44:32 | 显示全部楼层
imspider 发表于 2018-3-31 16:29
改过去就可以了,但为什么第三行 times 必须得是 4,我改成 3 就只能猜 2 次就结束了。

一来就少了一次了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 20:51:06 | 显示全部楼层
ba21 发表于 2018-3-31 18:44
一来就少了一次了

理解了,谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 05:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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