【问题标题】:While loops and breaking when boolean becomes false当布尔值变为假时,while循环和中断
【发布时间】:2013-04-03 14:43:29
【问题描述】:

我正在尝试创建一个循环,使程序继续运行直到 bank>100000,并且在该 while 循环中还有另一个 while 循环确定 bank 是否已达到最小值(用户是否失败,并且 bank 重置为 20000 )。 当前,即使连续迭代达到 1000000 条件,循环也会运行并永远继续。谁能看到解决这个问题的方法?

n.b. 'singles' 只是一个包含一个数字的数组。

非常感谢。

i = 0
newbank = []
iterations = []
while bank < 1000000:
    bank = 20000
    while bank > 100:
        spin = randint(0, 38)
        if choices2 == singles:
            if spin == singles:    
                bank = bank + (bet * 35)
            else:
                bank = bank - bet
            i = i + 1
            iterations.append(i)
            newbank.append(bank)

【问题讨论】:

  • 事实:我发现带有 1 个空格缩进的代码难以阅读。
  • 下注的价值是多少?
  • @MartijnPieters:享受 :)
  • Offtopic:我无法想象更糟糕的pythonic代码。 D:“iterations.append(i)”——为什么?!在这个周期中选择 2 会改变吗?你真的需要这个 if 语句吗?
  • 赌注的价值是 100

标签: python if-statement while-loop breakpoints


【解决方案1】:

即使bank &lt; 10000000,您的第二个while 也会继续运行,因此您将永远不会离开该循环,如果您这样做了,那么您将停留在第一个循环上。

您的代码无法停止。

你想要...

while bank > 100 and bank < 1000000:

我不确切知道您要实现什么逻辑,但您需要更好地考虑您的停止条件。

编辑:

在更好地阅读您的问题后,我认为您应该摆脱这两个循环,因为一个就足够了。

在循环外初始化你的bank = 20000

bank = 20000
while bank < 1000000:
    if bank < 100:
        bank = 20000

.... 

【讨论】:

  • 天啊!是的,忘记在第二个 while 循环中将银行的限制设置为
猜你喜欢
  • 2017-11-20
  • 2011-08-01
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2021-01-12
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多