鱼C论坛

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

[已解决]代码不太懂 求科普

[复制链接]
发表于 2018-6-13 16:21:55 | 显示全部楼层 |阅读模式

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

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

x
  1. import random                        

  2. secret = random.randint(1, 10)   

  3. temp = input('不妨猜一下小甲鱼现在心里想的是哪个数字:')
  4. guess = int(temp)
  5. times = 3                                   
  6. while guess != secret  and  times:                  ###这句执行循环体的条件为guess 不等于secret  并times??? 不理解为啥  and  times
  7.     if times != 3:
  8.         temp = input('哎呀,猜错了,请重新输入吧:')
  9.         guess = int(temp)

  10.     if guess == secret:
  11.         print('哎呀,你是小甲鱼肚里的蛔虫吗?')
  12.         print('哼~猜中了也没有奖励!')
  13.     else:
  14.         if guess > secret:
  15.             print("哥,大了大了~~~")
  16.         else:
  17.             print('嘿,小了小了~~~')
  18.     times = times - 1

  19. if times == 3:    #假如第一次就猜中
  20.         print('哎呀,你是小甲鱼肚里的蛔虫吗?')
  21.         print('哼~猜中了也没有奖励!')
  22.         
  23. print('游戏结束,不玩啦^_^')
复制代码
最佳答案
2018-6-14 09:48:40
xn360906 发表于 2018-6-14 09:38
还点在问问 哈
while guess != secret  and  times: 结果为Ture 才会执行循环体对吧
为False不就 不执 ...

if times !=3 只是while循环的一部分,后面还有其他if-else语句

因为如果是times为1或者2的时候猜对了会执行13~15行的代码,所以交互结果和23~25是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-13 17:11:32 | 显示全部楼层
and 是与判断,两边都为True的时候为真

times 是一个变量,当一个变量非空或不为零的时候表示True,
因为循环中times不断减小,直到为零,循环判断即为假
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-13 20:25:44 | 显示全部楼层
while (guess != secret)  and  (times)
意思是

while (true/false) and (true/false)

註: 任何不是0的數都是為true
while((true;false) and (true;false) ).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-13 20:55:24 | 显示全部楼层
while guess != secret  and  times:

有两层意思,且两层意思必须同时满足!
1、判断guess不等于secret时,进入while循环;
2、判断times为真时,即times不等于0时,进入while循环。
只有当上面2个条件同时满足时,循环才会执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 08:24:37 | 显示全部楼层
BngThea 发表于 2018-6-13 17:11
and 是与判断,两边都为True的时候为真

times 是一个变量,当一个变量非空或不为零的时候表示True,

while guess != secret  and  times:   
意思是guess 不等于secret 并且 times为True 的情况才会执行循环体呗?
变量为数字的情况判断返回值都为True 为0的情况下返回False  是这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 08:36:57 | 显示全部楼层
BngThea 发表于 2018-6-13 17:11
and 是与判断,两边都为True的时候为真

times 是一个变量,当一个变量非空或不为零的时候表示True,

  if times != 3:  #这句 如果 times不等于3则执行下面的代码对吧  为什么是if times != 3:呢 ?
     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 08:46:54 | 显示全部楼层
xn360906 发表于 2018-6-14 08:36
if times != 3:  #这句 如果 times不等于3则执行下面的代码对吧  为什么是if times != 3:呢 ?

times初始的时候为3,然后在循环开始之前已经完成对guess的赋值操作了,所以只需要处理times为1和2的情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 09:11:46 | 显示全部楼层
BngThea 发表于 2018-6-14 08:46
times初始的时候为3,然后在循环开始之前已经完成对guess的赋值操作了,所以只需要处理times为1和2的情况

那这个整体代码是
while guess != secret  and  times: #执行循环体的条件为guess 不等于secret  并times不为0才会执行
if times != 3 # 如果times  不等于3才会往下继续执行

while guess != secret  and  times:  如果 guess等于 secret并且 times不为0返回False 不会执行循环体既然没执行 times 的值就没有变 所以有了if times == 3: 对不对这么理解
i

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

使用道具 举报

发表于 2018-6-14 09:26:27 | 显示全部楼层
xn360906 发表于 2018-6-14 09:11
那这个整体代码是
while guess != secret  and  times: #执行循环体的条件为guess 不等于secret  并time ...

是这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 09:38:00 | 显示全部楼层

还点在问问 哈
while guess != secret  and  times: 结果为Ture 才会执行循环体对吧
为False不就 不执行了吗 为什么还有if times != 3:# times不等于3才会继续运行呢 ?
while循环为False的话 不就是应该执行
if times == 3:    #假如第一次就猜中
        print('哎呀,你是小甲鱼肚里的蛔虫吗?')
        print('哼~猜中了也没有奖励!')
这个吗
还是没理解
if times != 3:
        temp = input('哎呀,猜错了,请重新输入吧:')
        guess = int(temp)

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

使用道具 举报

发表于 2018-6-14 09:48:40 | 显示全部楼层    本楼为最佳答案   
xn360906 发表于 2018-6-14 09:38
还点在问问 哈
while guess != secret  and  times: 结果为Ture 才会执行循环体对吧
为False不就 不执 ...

if times !=3 只是while循环的一部分,后面还有其他if-else语句

因为如果是times为1或者2的时候猜对了会执行13~15行的代码,所以交互结果和23~25是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 10:00:46 | 显示全部楼层
BngThea 发表于 2018-6-14 09:48
if times !=3 只是while循环的一部分,后面还有其他if-else语句

因为如果是times为1或者2的时候猜对了 ...

那第一次就猜中的话是怎么个逻辑和执行循序呢  能说一下吗

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

使用道具 举报

发表于 2018-6-14 10:14:17 | 显示全部楼层
xn360906 发表于 2018-6-14 10:00
那第一次就猜中的话是怎么个逻辑和执行循序呢  能说一下吗

第一次就猜中了,那while循环不执行,直接执行23~25行的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 10:26:05 | 显示全部楼层
BngThea 发表于 2018-6-14 10:14
第一次就猜中了,那while循环不执行,直接执行23~25行的内容

如果要加入提示用户剩余次数 在里加?
if times != 3:
        temp = int(input('哎呀,猜错了,请重新输入吧:'))
       print("剩余机会", times-1,"次")
但就提示
-----------------------------------------------------------
不妨猜一下我心中的数字:8
大了!大了
哎呀猜错了,请重新输入吧:9
剩余机会 1 次
大了!大了
哎呀猜错了,请重新输入吧:6
剩余机会 0 次
恭喜猜对了哦
不过猜对也没有奖励
小了小了
-------------------------------------------------
就提示剩余1次机会    为什么第一次用户输入判断不对提示用户继续输入 剩余次不不提示啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 10:31:23 | 显示全部楼层
xn360906 发表于 2018-6-14 10:26
如果要加入提示用户剩余次数 在里加?
if times != 3:
        temp = int(input('哎呀,猜错了,请 ...

把提示放到16行对应的else语句块中
放到最后
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 10:41:50 | 显示全部楼层
BngThea 发表于 2018-6-14 10:31
把提示放到16行对应的else语句块中
放到最后

完美解决  但是是什么逻辑啊
为什么放在
if times != 3:
        temp = input('哎呀,猜错了,请重新输入吧:')
        guess = int(temp)
这不可以呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 11:05:02 | 显示全部楼层
xn360906 发表于 2018-6-14 10:41
完美解决  但是是什么逻辑啊
为什么放在
if times != 3:

因为等于3的时候就不进去里面了
而且放在了input后面,必须等input结束才出现提示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-14 11:11:50 | 显示全部楼层
BngThea 发表于 2018-6-14 11:05
因为等于3的时候就不进去里面了
而且放在了input后面,必须等input结束才出现提示

意思 要放在循环体的最后是吗  每次循环后都hi提示剩余机会 是这意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 11:39:36 | 显示全部楼层
xn360906 发表于 2018-6-14 11:11
意思 要放在循环体的最后是吗  每次循环后都hi提示剩余机会 是这意思吗?

放在哪里要具体根据逻辑进行分析,没必要纠结这个问题不放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 14:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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