2017-08-09 52 views
0

我有一个Try内部/单行除块,但是当出现异常正在执行这个块之外另一条线。我在我的手机上,所以我只需输入几行Python的指令外尝试:除了:

try: 
    total=total+int(number) 
except: 
    print('Bad input') 
count = count + 1 

当我输入数字时,计数会按预期递增。如果输入一个字符,异常会被捕获,但计数仍会增加。如果发生异常,我认为只有try/except块中的行会重复。

+3

Try-except语句不会自动重复任何操作。如果你有一个'while'循环包裹这个或者什么的话,'while'循环将会重复整个循环体。 – user2357112

回答

1

您需要使用try/except语句的else条款,如果你只是想增加count如果一个例外是提高。 From the documentation section 8.3 Handling Exceptions

在try ... except语句有一个可选的else子句,其中,如果存在的话,必须遵循所有的条款除外。如果try子句不引发异常,则必须执行该代码。

try: 
    total += int(number) 
except ValueError: 
    print('Bad input') 
else: 
    count += 1 

正如你可以从上面看到的,我改变了你的光,除了语句来捕获特定的异常类型ValueError,因为这会如果不能转换它的参数的intint将提高。如果您想要捕获其他例外情况,请更改ValueError,但不要使用纯粹的except子句,因为它可以屏蔽重要的例外情况。

同样如评论中所述,try/except声明不会多次执行它的正文。如果你想要这种行为,你需要一个循环。

+0

谢谢。我错误地认为尝试/除了自己的循环。菜鸟的错误。这包括在一个while循环中,但我不想在手机上输入它。我不知道其他选项,谢谢。当我输入我的代码时,我看到我的原始帖子没有正确格式化。输入代码和维护缩进的正确步骤是什么? – Ali

+0

@Ali突出显示您希望缩进的所有代码。然后按编辑标题中的“{}”按钮,或使用快捷键“ctrl + k”。 –

0

,当你输入字符抛出异常。无论如何,行count = count + 1仍然被执行。因为count = count + 1不在else:这就是为什么计数仍然增加。 另外,要认识到try-except语句不会重复。