Python循环(跳过某些部分)

时间:2015-03-01 10:34:19

标签: python loops

while y != 100:
            dice = random.randint(1,6)
            print('Roll '+str(dice)+' ... '+str(y)+' + '+str(dice)+' is '+str(y+dice))
            z = y
            y = y + dice
            if y > 100:
                    print('Roll '+str(dice)+' ... '+str(z)+' + '+str(dice)+' is over 100. Therefore it remains at '+str(z)+'\n')
                    y = z
                    input('Press <Enter> to roll again...\n')

上述代码的输出是:

再按一次滚动...

Roll 5 ... 98 + 5是103

Roll 5 ... 98 + 5超过100.因此它保持在98

再按一次滚动...)

如何跳过'Roll 5 ... 98 + 5 is 103'部分

再按一次滚动...

Roll 5 ... 98 + 5超过100.因此它保持在98

再次按下滚动...)???

2 个答案:

答案 0 :(得分:0)

以下是编辑过的代码:

#import time
y=0
while True:
    #time.sleep(1.0) #Wait 1 second before rolling dice to prevent rolling too fast
    dice = random.randint(1,6); y = y + dice
    if y < 100: print('You rolled '+str(dice)+' ... '+str(y-dice)+' + '+str(dice)+' is '+str(y))
    if y > 100: print('Roll '+str(dice)+' ... '+str(y-dice)+' + '+str(dice)+' is over 100. Therefore it remains at '+str(z)+'\n'); y = y-dice
    try: a = input('Press <Enter> to roll again...\n')
    except: a=''
  1. 你没有elif没有if语句
  2. 您必须使用变量调用input('Press <Enter> to roll again...\n')作为其执行值
  3. a = input('Press <Enter> to roll again...\n')无论如何都需要执行,而不是放在if语句中,并且它只需要一个空行,因此它需要捕获在调用空行时引发的错误

答案 1 :(得分:0)

在打印之前检查y > 100 。然后,如果y大于100,则打印“大于100”消息,并且不打印另一条消息。啊,用代码解释起来比较容易:

while y != 100:
    dice = random.randint(1,6)
    z = y
    y = y + dice
    if y > 100:
        print('Roll '+str(dice)+' ... '+str(z)+' + '+str(dice)+' is over 100. Therefore it remains at '+str(z)+'\n')
        y = z
        input('Press <Enter> to roll again...\n')
    else:
        print('Roll '+str(dice)+' ... '+str(y)+' + '+str(dice)+' is '+str(y+dice))

您可以看到我已将包含实际总数的print语句移动到else&lt; = 100时执行的y语句。

我还没有检查过剩下的逻辑。