Python程序仅输出首行后无限加载无后续结果,代码需如何修改
问题原因分析
- 核心死循环诱因是退出条件设置错误:当前
while循环的退出条件为money == 0 or money == 200,但每次筹码变化的步长bet是5~20的随机值,大概率出现步长无法让money恰好等于0或200的情况,例如bet=7时,100无论加减多少次7都不可能刚好等于0或者200,程序会无限循环无法退出。 - 次要逻辑缺陷是退出判断的顺序错误:当前代码先执行摇骰子逻辑,再判断是否满足退出条件,就算上一轮结束后
money已经符合退出要求,还是会多执行一轮无效的摇骰子操作。 - 额外补充:原代码里的货币单位拼写错误,
dollors应为dollars。
修复方案
仅需要调整两处逻辑即可解决问题:
- 把退出条件从严格等于
0/200,修改为小于等于0或者大于等于200,避免步长导致无法命中阈值的问题 - 把退出判断移动到循环最开头,符合正常的业务执行顺序
修改后完整代码
import random def main(): money = 100 win = 0 loss = 0 draw = 0 bet = random.randint(5, 20) print('You are starting with $100 and each round you will bet', bet, 'dollars') while True: # 先判断是否满足退出条件 if money <= 0 or money >= 200: break x = random.randint(1, 6) y = random.randint(1, 6) z = x + y if z == 7 or z == 11: money += bet win += 1 elif z == 2 or z == 3 or z == 12: loss += 1 money -= bet else: draw += 1 print('You ended up with', money, 'dollars, and you won', win, 'rounds, lost', \ loss, 'rounds, and drew', draw, 'rounds') main()
内容的提问来源于stack exchange,提问作者sunriseoc
相关产品推荐
相关产品推荐

