【问题标题】:how to make a while statement run one more time in python 3如何让一个while语句在python 3中再运行一次
【发布时间】:2015-02-14 02:44:15
【问题描述】:

有没有办法让while语句在它完成后再运行一次?

  • 例子:

    x=1
    while x<=30 :
        print('hello world')
        x+=1
        print(x)
    print('hello world')
    

这显然会打印 'hello world' 31 次。 虽然在较长的程序中,在循环之后重新编写整个代码有点愚蠢。

任何帮助将不胜感激!

更新! 我没有做 x

我正在构建一个二十一点游戏。因此,当银行达到 30 美元时,正在进行另一轮游戏,然后游戏结束。

银行的价值取决于玩家的投注 (银行有 10 美元,如果玩家下注 3 并输掉该轮,银行有 13 美元)

【问题讨论】:

  • 如何让条件“再一个”?
  • This will obviously print 'hello world' 31 times.
  • 将 while 循环更改为 while x&lt;31: 对您不起作用有什么原因吗?
  • 刚刚更新了!
  • 是否存在可能导致 while 循环过早停止的情况(例如,我只是一个出色的二十一点玩家,以至于我破产了银行)?

标签: loops python-3.x while-loop conditional-statements


【解决方案1】:

在进一步编辑问题后,这是一种相当直接的方式来做你想做的事。

编辑:

done = False
x = 1
while not done:
    if x >= 30:
        done = True  # Set done to true once x is greater than or equal to 30
                     # then print one last time
    print('hello world')
    x+=1
    print(x)

而不是这个:

x = 1
while x < 30:
    print('hello world')
    x += 1
    print(x)
print('hello world')

【讨论】:

  • 循环在第 30 轮结束,之后还有额外的一轮。实际上我正在构建一个二十一点游戏。当银行达到 30 美元时,正在播放另一轮,但是如果 while 语句停止在 30 处,我该如何再次运行我的代码。(银行可以是 28 美元,下一轮是 34 美元,具体取决于玩家的投注)
  • 我很困惑,30 发还是 30 美元?
  • 30$ 。while 循环应该结束,然后代码应该最后一次运行。
  • 我无法使用该代码,但我的问题已得到解答!不过感谢您的支持!
【解决方案2】:

当然,如果您的条件是数字,例如x &lt; 30,您可以将其更改为x &lt; 31x &lt;= 30,但这可能并不总是可行。另一种方法是将循环体包装到一个函数中,并在 within 和循环之后再次调用它,但这也可能并不总是可行的。

或者,您可以使用原始条件和某些表达式的析取,该表达式第一次计算为True,然后计算为False。例如,您可以在列表[True, False] 上使用迭代器。只要实际条件为True,则根本不计算第二部分(or 是惰性的),然后,当条件为False 时,调用next,第一次产生True然后False

x=1
oncemore = iter([True, False])
while x < 30 or next(oncemore):
    x+=1
    print(x)

或者您可以将条件检查推迟到内部循环。这样退出条件只会在循环的下一次迭代中生效。

once_more = True
while once_more:
    if not (x < 30):
        once_more = False
    # original loop body here

【讨论】:

  • 听起来很有趣,我会去看看!
【解决方案3】:

我自己更喜欢使用 while 循环的 else 语句再做一次作为示例检查一下:

oncemore = True 
num_list = []
while oncemore:
    num_list.append((num % 10))
    num = int(num / 10)
    if int((num/10)) == 0:
        oncemore = False
else:
    num_list.append((num % 10))
    num = int(num / 10)
    num_list.reverse()
    return num_list

在我的while循环完全完成后,else语句再做我想做的事,只要记住这一点,while循环应该完全完成而没有任何中断

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 2016-11-06
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多