loops - 如何让 while 语句在 python 3 中再运行一次

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

有什么办法可以让 while 语句在完成后再运行一次?

  • 例子:

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

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

任何帮助将不胜感激!

更新! 我没有做 x<31 的原因如下。

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

银行的值(value)取决于玩家的投注 (bank strats with 10$ ,如果玩家下注 3 并输掉这一轮,银行有 13$)

最佳答案

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

或者,您可以使用原始条件的析取和某些计算结果为 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

关于loops - 如何让 while 语句在 python 3 中再运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27493617/

相关文章:

python-3.x - 为什么 Gensim doc2vec 给出 AttributeError : 'list' object has no attribute 'words' ?

java - 循环方法

python - 迭代相同长度的行文件的每个字符串的索引,同时从各个索引创建每个值的新字符串

php - 如何回显已填充的 php 数组

java - 打破 Java 中的嵌套 for 循环

python - 让高优先级python线程进入临界区,而低优先级线程在临界区执行

python - 如何在字典初始化时调用 __set_item__?

java - while 循环,为 java 中的下一个 while 循环存储值

c - 循环中的值不返回

Python Socket : infinite loop socket bind, listen 会不会导致内存溢出?