如何在python 3中再次运行while语句

时间:2014-12-15 21:38:39

标签: 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次。 虽然在较长的程序中,在循环之后重新编写整个代码有点愚蠢。

任何帮助将不胜感激!

UPDATE! 我没做x&lt; 31的原因如下。

我正在建立一个二十一点游戏。所以,当银行达到30美元时,正在播放另一轮,然后游戏就结束了。

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

3 个答案:

答案 0 :(得分:2)

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

或者,您可以使用原始条件的析取和第一次求值为True的某个表达式,然后使用False。例如,您可以在列表上使用迭代器{ {1}}。只要实际条件为[True, False],第二部分根本不进行评估(True是懒惰的),那么,当条件为or时,会调用False ,第一次产生next,然后True

False

或者你可以将条件推迟到里面循环。这样,退出条件只会在循环的 next 迭代中生效。

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

答案 1 :(得分:0)

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

编辑:

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')

答案 2 :(得分:0)

我自己更喜欢使用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循环应该完全结束而不会中断