关于小游戏的改进
import randomsecret = random.randint(1,100)
time = 1
print("开始游戏√")
temp = input("猜猜我心里的数字:")
guess = int(temp)
if guess == secret:
print("猜对啦!")
else:
if guess > secret:
print("大了")
else:
print("小了")
while (guess != secret) and (time<3):
temp = input("再给你一次机会吧")
guess = int(temp)
if guess == secret:
print("猜对啦!")
else:
if guess > secret:
print("大了")
else:
print("小了")
time = time+1
if time >= 3:
print("你输啦")
print("游戏结束啦")
请问这样改可以么qwq 重复代码比较多,想办法再改一改。 只需要将while循环加一个缩进即可,要放在else里,不然第一次猜对了他还会再给你猜一次。完整代码如下:
import random
secret = random.randint(1,100)
time = 1
print("开始游戏√")
temp = input("猜猜我心里的数字:")
guess = int(temp)
if guess == secret:
print("猜对啦!")
else:
if guess > secret:
print("大了")
else:
print("小了")
while (guess != secret) and (time<3):
temp = input("再给你一次机会吧")
guess = int(temp)
if guess == secret:
print("猜对啦!")
else:
if guess > secret:
print("大了")
else:
print("小了")
time = time+1
if time >= 3:
print("你输啦")
print("游戏结束啦")
本帖最后由 heidern0612 于 2020-4-29 16:11 编辑
import random
secret = random.randint(1,10)
time = 0
flag = 0
print("开始游戏√")
while time != 3 :
temp = input("猜猜我心里的数字:")
guess = int(temp)
if guess == secret:
print("猜对啦!")
break
else:
if guess > secret:
print("大了")
else:
print("小了")
time = time+1
if time == 3 and flag == 0:
print("再给你一次机会吧")
flag = 1
time = 2
print("游戏结束")
待编辑 重复代码过多。
可以更加精简
import random
secret=random.randint(1,10)
promt="你猜猜我心里想的1~10中的哪个数字:"
i=3
while i:
temp =input (promt)
i-=1
promt="还有%d次机会,你再猜一次:"%i
guess = int (temp)
if guess > secret:
print("大了,猜大了")
elif guess< secret:
print("小了,猜小了")
if guess == secret:
print ("猜对了,你真是我肚里的蛔虫啊!")
print ("猜中也没什么奖励了")
break
else:
print("你的机会用光了!")
print("游戏结束,不玩啦^_^") heidern0612 发表于 2020-4-29 16:02
待编辑
大神,请问两个问题哈
1.这里的flag是定义做什么的?为什么后面还要有个flag=1,time=2呢
2.当time==3和flag==0的时候,要写在while下面么,已经不是while成立的条件了啊 本帖最后由 heidern0612 于 2020-4-29 17:50 编辑
Lucky.Jobling 发表于 2020-4-29 17:23
大神,请问两个问题哈
1.这里的flag是定义做什么的?为什么后面还要有个flag=1,time=2呢
2.当time==3 ...
1、这个flag就相当于一个开关,默认是关着的(等于0),当你time等于3的时候,这个开关就开了(重新赋值等于1)。赋值之后下次再while循环到这的时候,由于不满足flag等于0,所以就不判断time==3的条件了。所以能保证这个if分支只执行了一次。
2、你得弄明白while循环的含义,while循环每次循环都是程序从头走到尾,除非是有break和continue破坏了当次循环。
time==3的时候,是不满足当前while循环的条件了,但是这次循环下面的程序还没执行呢,当次循环的程序还没结束呢,下面的if还得跑完。
假如满足当前time 等于3,并且flag等于0(默认等于0)的情况,进入if分支,我把这个flag开关(重新赋值为1)打开,并且重新赋值了time,让time等于2,这次执行完了之后,由于time不等于3,还会从开开始循环最后一次。
并且由于我flag重新赋值了1,最下面的if条件并不满足,所以就满足了只重新猜一次的需求。
说白了,这只是利用变量做了个开关的小技巧,让某个满足条件的程序只运行一次就销毁。 heidern0612 发表于 2020-4-29 17:45
1、这个flag就相当于一个开关,默认是关着的(等于0),当你time等于3的时候,这个开关就开了(重新赋 ...
谢谢大神,但是还是有些不明白{:10_269:}
1、while里的循环是对第一次和第二次进行判断,这两次time都不等于3,最后的if也不会执行啊,第三次的时候time=3执行if,这个时候time已经不满足while的条件,那程序不是直接继续往下执行打印“游戏结束”就结束了么,flag控制if条件执行一次该怎么理解。。。
2、最后一个if条件是写在while循环里的,如果和while对齐,不缩进,程序正确么
3、while条件满足的时候就从头到尾执行所有程序,是不是不管条件是否成立,后面的程序都会一股脑地执行到整个程序结束?那break和contunue的意义是什么啊,反正程序都会一直走,中间打断或者继续还有什么特别用处么
heidern0612 发表于 2020-4-29 17:45
1、这个flag就相当于一个开关,默认是关着的(等于0),当你time等于3的时候,这个开关就开了(重新赋 ...
我试了,不缩进,程序不正确,第四次的时候不能再输入答案就游戏结束了。为什么缩进到while下,即使time=3了,也可以进行while下面的程序?
开始游戏√
猜猜我心里的数字:1
小了
猜猜我心里的数字:2
小了
猜猜我心里的数字:3
小了
再给你一次机会吧
游戏结束 本帖最后由 heidern0612 于 2020-4-30 12:58 编辑
Lucky.Jobling 发表于 2020-4-30 12:26
谢谢大神,但是还是有些不明白
1、while里的循环是对第一次和第二次进行判断,这两次time都不 ...
1、第三次的时候time是等于3了,但是第三次程序还没执行完啊,它不还得往下执行完了才能跳出while循环再执行下面的游戏结束么?
flag只是个变量的名字,你可以起名叫charge或者temple都是可以的。
当循环到time等于3的时候,满足time ==3并且 flage ==0,就进入了if分支判断。
进入之后,我把flag改成1,保证下次循环到if这里,不满足这个if条件。
并且为了保证while不结束,我把time重新赋值等于2(也就是说,本来应该time等于3结束while循环的,因为我的重新赋值,所以又循环了一次),而由于不满足while里time不等于3的条件,所以又从头循环了一次。
这次执行到if的时候,虽然time == 3了,但是if不等于0(上面我重新赋值了flag等于1),所以不执行if条件。
当这次循环完成,由于time又等于3了,所以跳出了循环。
2、不能和while对齐,如果对齐的话,就没办法从头再循环一次了。
3、while条件为假的时候,确实是不断循环;但当while为真的时候,也得循环完当前次数才算结束。
break的意义在于,不管你下面还有什么程序,当while运行到这的时候,后面写的再多也不执行了,直接跳出while,执行下面的语句。
而continue的意义在于,不管你下面还有什么内容,当while运行到这的时候,后面写的再多也不执行了,直接跳出当次循环,再从头执行while。
两个区别在于,一个强制破坏了while,相当于说对程序说,到我break这就不执行循环了。
而continue在于告诉程序,当你执行到我这的时候,别往下执行了,继续你的下次循环吧。
heidern0612 发表于 2020-4-30 12:44
1、第三次的时候time是等于3了,但是第三次程序还没执行完啊,它不还得往下执行完了才能跳出while循环 ...
3、while条件为假的时候,确实是不断循环;但当while为真的时候,也得循环完当前次数才算结束。
这里是不是说反了啊,while条件是真的时候才会不断循环?
有一点明白了,再多一些程序里吃透,谢谢{:10_254:} Lucky.Jobling 发表于 2020-4-30 13:55
3、while条件为假的时候,确实是不断循环;但当while为真的时候,也得循环完当前次数才算结束。
这里 ...
对,说反了。{:5_102:}
页:
[1]