Re: [问题] 关于循环问题

楼主: Hsins (翔)   2020-03-03 01:33:58
# 从 random 套件包里面引入 randint 函数
from random import randint
# 初始化财产值
money = 1000
# 当财产值为正值,执行循环
while money > 0:
print('你的总资产为: ', money)
needs_go_on = False # 一个标签在之后用来判断是否继续
# 先初始化为 False,在后来的过程判断有没有
# 需要改为 True 让程式继续
while True:
debt = int(input('请下注: '))
if 0 < debt <= money: # 下注金额必须小于等于拥有财产
break # 否则结束循环
first = randint(1, 6) + randint(1, 6)
print('玩家摇出了 %d 点' % first)
if first == 7 or first == 11:
print('玩家胜!')
money += debt
elif first == 2 or first == 3 or first == 12:
print('庄家胜!')
money -= debt
else: # 上面两个都不满足,玩家跟庄家都没人胜出
needs_go_on = True # 表示程式应该继续执行,把标签值改为 True
while needs_go_on: # 标签值用在此处,决定程式游戏是否继续
needs_go_on = False # 游戏继续,但先假设这局会结束
# 看看后面有没有需要更正
current = randint(1, 6) + randint(1, 6)
print('玩家摇出了 %d 点' % current)
if current == 7:
print('庄家胜')
money -= debt
elif current == first:
print('玩家胜')
money += debt
else: # 发现又再一次不满足庄家和玩家都胜利
needs_go_on = True # 表示还需要继续执行,标签改为 True
# 再次进入当前循环
# 财产值已经不为正值,不会再执行上述循环才会到这
print('你破产了, 游戏结束!')
作者: cuteSquirrel (松鼠)   2020-03-03 13:07:00
push
作者: hellokidding (喔是喔真的假的)   2020-03-03 15:41:00
讲的超清楚!大感谢!!想问一下下注那边的while True:的这个布林判断是第二个判断,还是是needs_go_on = False变成true
楼主: Hsins (翔)   2020-03-03 17:06:00
建议你自己找地方插 print() 语句,把实际上运作逻辑动手画个图出来走走看。然后把你觉得奇怪的地方,觉得可以自己更动的地方动手改一改,看看跑出来跟题目要求符不符合?他解答写的未必就好,实作方法也不是只有这一种。
作者: hellokidding (喔是喔真的假的)   2020-03-03 23:35:00
我懂了!谢谢h大
作者: xsubarux (昴)   2020-03-04 03:10:00
# 下注金额必须小于等于拥有财产# 否则结束循环 <-这句注解意思错了吧?应该是下注小于等于财产时才会从输入下注金额的循环结束,进行后面的程式
楼主: Hsins (翔)   2020-03-04 07:09:00
你说的是对的,看太快ㄌ><

Links booklink

Contact Us: admin [ a t ] ucptt.com