我有一个Try内部/单行除块,但是当出现异常正在执行这个块之外另一条线。我在我的手机上,所以我只需输入几行Python的指令外尝试:除了:
try:
total=total+int(number)
except:
print('Bad input')
count = count + 1
当我输入数字时,计数会按预期递增。如果输入一个字符,异常会被捕获,但计数仍会增加。如果发生异常,我认为只有try/except块中的行会重复。
我有一个Try内部/单行除块,但是当出现异常正在执行这个块之外另一条线。我在我的手机上,所以我只需输入几行Python的指令外尝试:除了:
try:
total=total+int(number)
except:
print('Bad input')
count = count + 1
当我输入数字时,计数会按预期递增。如果输入一个字符,异常会被捕获,但计数仍会增加。如果发生异常,我认为只有try/except块中的行会重复。
您需要使用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
,因为这会如果不能转换它的参数的int
int
将提高。如果您想要捕获其他例外情况,请更改ValueError
,但不要使用纯粹的except
子句,因为它可以屏蔽重要的例外情况。
同样如评论中所述,try/except
声明不会多次执行它的正文。如果你想要这种行为,你需要一个循环。
谢谢。我错误地认为尝试/除了自己的循环。菜鸟的错误。这包括在一个while循环中,但我不想在手机上输入它。我不知道其他选项,谢谢。当我输入我的代码时,我看到我的原始帖子没有正确格式化。输入代码和维护缩进的正确步骤是什么? – Ali
@Ali突出显示您希望缩进的所有代码。然后按编辑标题中的“{}”按钮,或使用快捷键“ctrl + k”。 –
,当你输入字符抛出异常。无论如何,行count = count + 1
仍然被执行。因为count = count + 1
不在else:
这就是为什么计数仍然增加。 另外,要认识到try-except语句不会重复。
Try-except语句不会自动重复任何操作。如果你有一个'while'循环包裹这个或者什么的话,'while'循环将会重复整个循环体。 – user2357112