You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅押注奇数的无限轮盘赌模拟器代码无限循环问题求助

轮盘赌模拟器代码问题修复

问题分析

你的代码出现无限循环和逻辑错误的原因如下:

  • 金额计算与打印逻辑混乱:赢/输钱时的金额打印完全错误,导致Money的实际值和输出不符;同时赢钱后未重置下注金额到最小值,输钱后翻倍下注未限制最大值。
  • 循环结束条件未触发:“达成目标”和“输光钱”的判断被嵌套在奇偶判断的分支里,永远不会执行;且循环条件在Money等于目标时仍会继续循环。

修正后的代码

import random
random.seed(5)

profit_goal = int(input('Profit Goal:'))
starting_money = int(input('Starting money:'))
table_min = int(input('Table minimum bet:'))
table_max = int(input('Table maximum bet:'))

bet = table_min
money = starting_money

while 0 < money < profit_goal:  # 等于目标时直接退出循环
    number = random.randint(1, 36)
    previous_money = money  # 记录下注前的金额
    
    if number % 2 != 0:
        # 赢钱:金额增加下注额,下注重置为最小值
        money += bet
        print(f'Spin: {number}. You won ${bet} on the bet. You had {previous_money}. Now you have {money} left.')
        bet = table_min
    else:
        # 输钱:金额减少下注额,下注翻倍但不超过最大值
        money -= bet
        print(f'Spin: {number}. You lost ${bet} on the bet. You had {previous_money}. Now you have {money} left.')
        bet = min(bet * 2, table_max)  # 限制下注不超过桌台最大值
    
# 循环结束后判断最终结果
if money >= profit_goal:
    print(f'You reached your goal and beat the casino. You should stop now. You have ${money}.')
elif money <= 0:
    print('You have lost all of your money')

关键修改点

  • 循环条件改为0 < money < profit_goal,当金额等于或超过目标时直接退出循环。
  • 每次下注前记录previous_money,确保打印的“之前金额”准确。
  • 赢钱后将bet重置为table_min,和示例逻辑保持一致。
  • 输钱后用min(bet * 2, table_max)限制下注金额不超过桌台最大值。
  • 将结果判断移到循环外部,确保循环结束后正确输出最终状态。
  • 用f-string优化输出格式,和示例效果匹配。

内容的提问来源于stack exchange,提问作者Gwyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:01:33