鱼C论坛

 找回密码
 立即注册
查看: 1172|回复: 12

[已解决]课后习题大神求解答

[复制链接]
发表于 2018-2-4 20:50:24 | 显示全部楼层 |阅读模式

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

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

x
请问为什么要给guess 复制  并且还不能是1到10之间   为什么是0  我赋值11可以吗,我是小白  求大神耐心解答
最佳答案
2018-2-5 16:04:00
一、为什么要给guess赋值?
因为在接下来的while循环的条件中就有
  1. guess != secret
复制代码
,若不事先给guess赋值程序就无从知道guess是什么,继而无法继续运行程序。
二、为什么不能是1-10之间?
注意看前面的
  1. secret = random.randint(1,10)
复制代码
语句,这里规定了正确答案的区间,正确答案是计算机随机生成的数字,如果你给guess赋值在1-10之间,则有几率和该语句生成的随机数secret相等,即
  1. guess=secret
复制代码
,不满足后面的while循环条件,所以会直接跳过循环执行
  1. print('游戏介绍,不玩啦^_^'),
复制代码
这样就达不到程序效果了。
三、将guess赋值为11可以吗?
可以,只要不是1-10之间的数就行,原因见第二
QQ截图20180204204835.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-4 20:52:18 | 显示全部楼层
随便,只要不在secret生成范围内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-4 20:54:04 | 显示全部楼层
塔利班 发表于 2018-2-4 20:52
随便,只要不在secret生成范围内

那不赋值可以吗,它出现在这里总得有点意义吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 20:54:53 | 显示全部楼层
淡然随心 发表于 2018-2-4 20:54
那不赋值可以吗,它出现在这里总得有点意义吧

不赋值,怎么进去判断WHILE,还是你想哪里赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-4 21:03:40 | 显示全部楼层
塔利班 发表于 2018-2-4 20:54
不赋值,怎么进去判断WHILE,还是你想哪里赋值

没有太懂呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 21:24:13 | 显示全部楼层

你自己删了试试,没赋值,应该会提示没有定义guess
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 22:29:12 | 显示全部楼层
如果guess不赋值的话,系统会定义guess是没有定义的就会保存,你可以随便定义值只要不是1到10之间的数就可以,要不然直接猜中的话就不会执行里面的程序直接结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 23:19:18 | 显示全部楼层
因为while后面跟的【guss!=secret】是条件判断,不是赋值语句,如果没有在while之前赋值就无法进行判断,也就无法进行循环,会提示guess未定义先使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 23:22:42 | 显示全部楼层
不赋值1--10是因为答案生成是随机的,如果在1--10内赋值,有可能会出现答案与你定义guess是赋的值刚好一致,导致进行while语句的条件不符合,无法进入while语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 08:51:20 | 显示全部楼层
你不赋值的话就相当于没有申明这个变量 系统就找不到他的存在  就无法进行判断比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 09:35:04 | 显示全部楼层
本帖最后由 checkily 于 2018-2-5 09:41 编辑

这里的guess赋一个初始值0,目的是为了让guess这个变量首次进入while的循环时,guess!=secret为真。你guess初始值赋11是没问题,只要不是在(1,10)里面就行。
其实这个变量可以不需要初始的。我简化了,你看下。更容易懂。如果对你有帮助,请点“最佳答案”,谢谢。
  1. import random
  2. secret=random.randint(1,10)
  3. print('……………………我爱鱼C工作室……………………')
  4. time=3

  5. while time>0:                                   #这里只用time让程序进入while循环就可以了。
  6.     guess=int(input("不妨猜一小甲鱼现在心里想的事哪个数字(1,10):"))   #直接把输入的数值赋值给guess,就不用给guess初始化一个值了
  7.     time-=1
  8.     if guess==secret:
  9.         print("我曹,你是小甲鱼心目中的蛔虫吗?!!")
  10.         print('嘿,不过猜对了也没奖~~')
  11.         time=0  ##猜中了,就退出。这里用break会更好,如果你学到了break
  12.     elif guess>secret:
  13.         print("哥,大了,大了!!")        
  14.     else:
  15.         print("嘿,小了,小了!!")

  16. print("游戏结束,不玩啦(*^__^*) ……")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 11:01:44 | 显示全部楼层
赋值不等于secret是为了满足while条件进入while循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-5 16:04:00 | 显示全部楼层    本楼为最佳答案   
一、为什么要给guess赋值?
因为在接下来的while循环的条件中就有
  1. guess != secret
复制代码
,若不事先给guess赋值程序就无从知道guess是什么,继而无法继续运行程序。
二、为什么不能是1-10之间?
注意看前面的
  1. secret = random.randint(1,10)
复制代码
语句,这里规定了正确答案的区间,正确答案是计算机随机生成的数字,如果你给guess赋值在1-10之间,则有几率和该语句生成的随机数secret相等,即
  1. guess=secret
复制代码
,不满足后面的while循环条件,所以会直接跳过循环执行
  1. print('游戏介绍,不玩啦^_^'),
复制代码
这样就达不到程序效果了。
三、将guess赋值为11可以吗?
可以,只要不是1-10之间的数就行,原因见第二
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 19:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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