新手求助
import randomsecret=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,可以回避这个问题,但我就想知道原理,为啥上面第一段的代码首次输入正确就显示牛逼,错了也马上返回错了的结果。而下面这段代码第一次输入成功了就显示结束游戏,不显示牛逼。还有就是首次猜错,直接什么信息都不返回。为啥
如果第一次就输入正确,两个代码都不会显示牛逼,因为牛逼是在 while 循环里面,如果第一次就猜对了根本不会进入 while 循环
这是我复制的上面的代码,为了方便演示 secret 重赋值为 5 了
import random
secret=random.randint(1,10)
temp=input("我心里的数字")
num=int(temp)
secret=5
while num!=secret:
temp=input("错了,重新输入")
num=int(temp)
if num==secret:
print("牛逼")
else:
if num>secret:
print("大了")
else:
print("小了")
print("游戏结束")
这是结果:
我心里的数字5
游戏结束
你看,secret 的值就是 5 ,第一次猜对了,所以没进入while 循环,根本不会打印牛逼 楼主逻辑没有搞清楚啊,第一次就中了就不进去循环了 不能懒 发表于 2021-8-23 22:03
楼主逻辑没有搞清楚啊,第一次就中了就不进去循环了
那第一次中了也不返回牛逼那个? import random
secret=random.randint(1,10)#导入模块
temp=input("猜猜我心里想的数字:")
num=int(temp)
if num==secret:
print("牛逼")#如果第一次就猜对,直接print'牛逼'&'游戏结束'
while num!=secret:#如果第一次没猜对,进入循环
if num>secret:#这几行是判定大小
print("大了")
else:
print("小了")
temp=input("请重新输入:")#把输入放在这里,就可以先显示大小提示,再让你重新输入
num=int(temp)
if num==secret:#如果第一次没猜对,就会进入循环,后面几次猜对了也可以print'牛逼'了
print('牛逼')
print("游戏结束")
第一组代码改动了一下【微调】(doge
第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while循环后,temp=input(“”)引号里应是显示的字符串,但你啥都没输,所以其实显示的就是空白
加上print(“我的数字”)当然就会输出,但与temp=input(“ 这里输入内容 ”)的形式和本质不同
times改为3可以回避我也不大理解,可能是times是2的话减着减着就<0了,如果times<0,那程序应该会出错{:10_257:} 你第一段代码,第一次输入中了能打印牛逼?
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("游戏结束")
这段代码难道不是,先显示‘我心里的数字’ 让你输入,中了就打印游戏结束,错了进入循环?
进入循环后
显示 ‘错了,重新输入’ 让你重新输入,中了才会打印 牛逼 吧
Rosy7673 发表于 2021-8-23 23:37
第一组代码改动了一下【微调】(doge
第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while ...
如果要弄成3次机会呢 g476292825 发表于 2021-8-23 23:22
那第一次中了也不返回牛逼那个?
是的,中了直接结束循环了 Rosy7673 发表于 2021-8-23 23:37
第一组代码改动了一下【微调】(doge
第二组代码之所以第一次猜错啥都不显示是因为猜错后进入while ...
弄成3次机会怎么修改 import random
secret=random.randint(1,10)
times=2
while times>0:
temp=input("我的数字")
num=int(temp)
times=times-1
if num==secret:
print("牛逼")
break
else:
if num>secret:
print("大了")
print("还有机会")
continue
else:
print("还有机会")
print("小了")
continue
if time==0:
print("GG")
break
print("游戏结束")
稍微改了亿下 叼辣条闯世界 发表于 2021-8-24 21:30
稍微改了亿下
continue 有什么用 g476292825 发表于 2021-8-24 21:30
弄成3次机会怎么修改
import random
secret=random.randint(1,10)
times=3#这里是次数
temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
num=int(temp)
while (num!=secret)and(times>0):#如果没猜中,并且还有机会,便进入循环
if num==secret:
print("牛逼")#猜中显示NB
else:
if num>secret:
print("大了♂")
else:
print("小了♂")
if times>0:
print("还有机会")
else:#如果没机会了,会显示GG
print("GG")
temp=input("不妨猜猜我现在心里想的是哪个数字吧:")
num=int(temp)
times-=1#每猜错一次,机会减少1
if num==secret:
print('牛逼')#如果第一次就猜中了,就会显示NB
print("游戏结束")
if times==0 and num!=secret:
print("正确答案是", secret)#如果机会用完了还没猜中,就会告诉你正确答案(貌似没什么luan用{:10_282:} )
部分解释用#给你标了,改成3次或者4次,5次......都差不多,最主要的是代码执行的主次 g476292825 发表于 2021-8-24 23:15
continue 有什么用
if num>secret:
print("大了")
print("还有机会")
continue
比如这段,如果满足num>secret(if num > secret为True),continue的作用就是不执行整个循环中后续的代码,直接跳到循环开始的地方,重新开始循环
如果不满足,就继续执行后续的代码
用continue时建议给个次数,不然有时会进入死循环{:10_254:}
页:
[1]