强制用户输入整数 - 不捕获错误

时间:2013-08-06 15:34:14

标签: python-3.x try-catch semantics infinite-loop

  1. 调用/引用的try:正下方的缩进行是什么?我听过“try:的身体”和“try:的表达”。请澄清。 (见用户 - 戳 - 回答)

  2. try:except:while:等等是什么意思?像TrueFalse一样被称为“陈述”。 (见用户 - 戳 - 回答)

  3. 有没有理由将function1更改为function2。它们之间的唯一区别是ValueError。这些函数只能强制用户输入整数。 (见用户 - 戳 - 回答)

  4. 功能1

    def get_integer(LIMIT_PROMPT):
        while True:
            try:
                return int(input(LIMIT_PROMPT))
            except:
                pass
    

    我见过很多except statement:并且在body / expression中有一段代码可以在try:

    的正文/表达式中发生错误时执行某些操作

    我在两个程序中使用了这个特殊功能,并没有遇到任何麻烦。

    函数2

    def get_integer(LIMIT_PROMPT):
        while True:
            try:
                return int(input(LIMIT_PROMPT))
            except ValueError:
                pass
    

1 个答案:

答案 0 :(得分:0)

  

像True和False一样被称为“陈述”

TrueFalse都是引用bool类型的单例值的变量。作为变量,它们是atomic expressions

tryexceptwhile语句,或更准确地说,是 compound statements ,因为它们包含一组其他语句。通常,您将该组语句称为,就像在其他语言中一样,它们被封装在创建令牌的块中(例如{})。在Python规范中,它们被称为 suite

每个复合语句的套件都没有特别的名称,所以我猜你可以称它们为“try suite”,“除套件”等,或“try block”和“except block”。

  

是否有任何理由将此功能更改为此(唯一的更改是ValueError)

通常,当您检查异常时,您应该尽可能具体。如果您知道在try块中执行的操作可以抛出类型为X的异常,则仅捕获/除异常X

不指定类型会使except catch 任何异常,包括那些你可能不知道它们可能被抛出的异常,所以你会丢失有用的信息。关于SO已经有很多问题已经处理过这个话题,所以我只会引导你找到我刚刚找到的random one。异常管理与语言无关,因此您只需将您阅读的内容应用于Python。