鱼C论坛

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

[已解决]新手求助

[复制链接]
发表于 2021-8-23 21:32:32 | 显示全部楼层 |阅读模式

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

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

x
import random
secret=random.randint(1,10)
temp=input("我心里的数字")
num=int(temp)
while num!=secret:
    temp=input("错了,重新输入")
    num=int(temp)
    if num==secret:
        print("牛逼")
    else:
        if num>secret:
            print("大了")
        else:
            print("小了")
print("游戏结束")
        
        
这个是直接按照小甲鱼的代码    第一次输入 中还是不中都有结果返回   第一次输入猜中也能有显示牛逼。


------------------------------------------------------------------------------------------------------------------------------------
import random
secret=random.randint(1,10)
times=2
temp=input("我的数字")
num=int(temp)
while (num!=secret)and(times>0):
    temp=input(" ")
    num=int(temp)
    times=times-1#
    if num==secret:
        print("牛逼")
    else:
        if num>secret:
            print("大了")
        else:
            print("小了")
    if times>0:
        print("还有机会")
    else:
        print("GG")
print("游戏结束")


这个我是仿照小甲鱼的代码基础上修改增加了输入机会,为什么我第一次输入如果中了也只是直接显示游戏结束,没有之前的显示牛逼。如果第一次没猜中直接什么都不显示。这是为啥。我知道这段第一次,的temp=input改为print(“我的数字”)  然后times改3,可以回避这个问题,但我就想知道原理,为啥上面第一段的代码首次输入正确就显示牛逼,错了也马上返回错了的结果。而下面这段代码第一次输入成功了就显示结束游戏,不显示牛逼。还有就是首次猜错,直接什么信息都不返回。为啥
最佳答案
2021-8-25 08:46:28
g476292825 发表于 2021-8-24 21:30
弄成3次机会怎么修改
  1. import random
  2. secret=random.randint(1,10)
  3. times=3#这里是次数

  4. temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
  5. num=int(temp)

  6. while (num!=secret)and(times>0):#如果没猜中,并且还有机会,便进入循环
  7.     if num==secret:
  8.         print("牛逼")#猜中显示NB
  9.     else:
  10.         if num>secret:
  11.             print("大了♂")
  12.         else:
  13.             print("小了♂")
  14.         if times>0:
  15.             print("还有机会")
  16.         else:#如果没机会了,会显示GG
  17.             print("GG")
  18.         temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
  19.         num=int(temp)
  20.         times-=1#每猜错一次,机会减少1

  21. if num==secret:
  22.     print('牛逼')#如果第一次就猜中了,就会显示NB
  23.    
  24. print("游戏结束")
  25. if times==0 and num!=secret:
  26.     print("正确答案是", secret)#如果机会用完了还没猜中,就会告诉你正确答案(貌似没什么luan用{:10_282:} )
复制代码


部分解释用#给你标了,改成3次或者4次,5次......都差不多,最主要的是代码执行的主次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-23 21:41:47 | 显示全部楼层
如果第一次就输入正确,两个代码都不会显示牛逼,因为牛逼是在 while 循环里面,如果第一次就猜对了根本不会进入 while 循环
这是我复制的上面的代码,为了方便演示 secret 重赋值为 5 了


  1. import random
  2. secret=random.randint(1,10)
  3. temp=input("我心里的数字")
  4. num=int(temp)
  5. secret=5

  6. while num!=secret:
  7.     temp=input("错了,重新输入")
  8.     num=int(temp)
  9.     if num==secret:
  10.         print("牛逼")
  11.     else:
  12.         if num>secret:
  13.             print("大了")
  14.         else:
  15.             print("小了")
  16. print("游戏结束")
复制代码


这是结果:

  1. 我心里的数字5
  2. 游戏结束
复制代码


你看,secret 的值就是 5 ,第一次猜对了,所以没进入while 循环,根本不会打印牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 22:03:26 | 显示全部楼层
楼主逻辑没有搞清楚啊,第一次就中了就不进去循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-23 23:22:39 | 显示全部楼层
不能懒 发表于 2021-8-23 22:03
楼主逻辑没有搞清楚啊,第一次就中了就不进去循环了

那第一次中了也不返回牛逼那个?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-23 23:37:43 | 显示全部楼层
  1. import random
  2. secret=random.randint(1,10)#导入模块

  3. temp=input("猜猜我心里想的数字:")
  4. num=int(temp)

  5. if num==secret:
  6.     print("牛逼")#如果第一次就猜对,直接print'牛逼'&'游戏结束'

  7. while num!=secret:#如果第一次没猜对,进入循环
  8.     if num>secret:#这几行是判定大小
  9.         print("大了")
  10.     else:
  11.         print("小了")
  12.     temp=input("请重新输入:")#把输入放在这里,就可以先显示大小提示,再让你重新输入
  13.     num=int(temp)
  14.     if num==secret:#如果第一次没猜对,就会进入循环,后面几次猜对了也可以print'牛逼'了
  15.         print('牛逼')

  16. print("游戏结束")
复制代码


第一组代码改动了一下【微调】(doge

第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while循环后,temp=input(“  ”)引号里应是显示的字符串,但你啥都没输,所以其实显示的就是空白
加上print(“我的数字”)当然就会输出,但与temp=input(“ 这里输入内容 ”)的形式和本质不同

times改为3可以回避我也不大理解,可能是times是2的话减着减着就<0了,如果times<0,那程序应该会出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 15:49:48 | 显示全部楼层
你第一段代码,第一次输入中了能打印牛逼?

  1. import random
  2. secret=random.randint(1,10)
  3. temp=input("我心里的数字")
  4. num=int(temp)
  5. while num!=secret:
  6.     temp=input("错了,重新输入")
  7.     num=int(temp)
  8.     if num==secret:
  9.         print("牛逼")
  10.     else:
  11.         if num>secret:
  12.             print("大了")
  13.         else:
  14.             print("小了")
  15. print("游戏结束")
复制代码

这段代码难道不是,先显示  ‘我心里的数字’   让你输入,中了就打印  游戏结束,错了进入循环?
进入循环后
显示 ‘错了,重新输入’ 让你重新输入,中了才会打印 牛逼 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 21:02:22 | 显示全部楼层
Rosy7673 发表于 2021-8-23 23:37
第一组代码改动了一下【微调】(doge

第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while ...

如果要弄成3次机会呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 21:05:05 | 显示全部楼层
g476292825 发表于 2021-8-23 23:22
那第一次中了也不返回牛逼那个?

是的,中了直接结束循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 21:30:40 | 显示全部楼层
Rosy7673 发表于 2021-8-23 23:37
第一组代码改动了一下【微调】(doge

第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while ...

弄成3次机会怎么修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 21:30:48 | 显示全部楼层
  1. import random
  2. secret=random.randint(1,10)
  3. times=2
  4. while times>0:
  5.     temp=input("我的数字")
  6.     num=int(temp)
  7.     times=times-1
  8.     if num==secret:
  9.         print("牛逼")
  10.         break
  11.     else:
  12.         if num>secret:
  13.             print("大了")
  14.             print("还有机会")
  15.             continue
  16.         else:
  17.             print("还有机会")
  18.             print("小了")
  19.             continue

  20.     if time==0:
  21.         print("GG")
  22.         break
  23. print("游戏结束")
复制代码

稍微改了亿下[doge]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 23:15:58 | 显示全部楼层

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

使用道具 举报

发表于 2021-8-25 08:46:28 | 显示全部楼层    本楼为最佳答案   
g476292825 发表于 2021-8-24 21:30
弄成3次机会怎么修改
  1. import random
  2. secret=random.randint(1,10)
  3. times=3#这里是次数

  4. temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
  5. num=int(temp)

  6. while (num!=secret)and(times>0):#如果没猜中,并且还有机会,便进入循环
  7.     if num==secret:
  8.         print("牛逼")#猜中显示NB
  9.     else:
  10.         if num>secret:
  11.             print("大了♂")
  12.         else:
  13.             print("小了♂")
  14.         if times>0:
  15.             print("还有机会")
  16.         else:#如果没机会了,会显示GG
  17.             print("GG")
  18.         temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
  19.         num=int(temp)
  20.         times-=1#每猜错一次,机会减少1

  21. if num==secret:
  22.     print('牛逼')#如果第一次就猜中了,就会显示NB
  23.    
  24. print("游戏结束")
  25. if times==0 and num!=secret:
  26.     print("正确答案是", secret)#如果机会用完了还没猜中,就会告诉你正确答案(貌似没什么luan用{:10_282:} )
复制代码


部分解释用#给你标了,改成3次或者4次,5次......都差不多,最主要的是代码执行的主次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-25 08:52:00 | 显示全部楼层
  1. if num>secret:
  2.             print("大了")
  3.             print("还有机会")
  4.             continue
复制代码

比如这段,如果满足num>secret(if num > secret为True),continue的作用就是不执行整个循环中后续的代码,直接跳到循环开始的地方,重新开始循环
如果不满足,就继续执行后续的代码
用continue时建议给个次数,不然有时会进入死循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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