除最后 - 运算符



我有一个关于块以外的好奇问题,尤其是最后:

在第一个代码的第一个块中,最终可以正常工作,与此同时,第二个代码与第一个的最小不同,它总是会给您带来错误。

首先:

def askint():
while True:
    try:
        val = int(raw_input("Please enter an integer: "))
    except:
        print "Looks like you did not enter an integer!"
        continue
    else:
        print 'Yep thats an integer!'
        break
    finally:
        print "Finally, I executed!"
    print val 

第二:

def Abra():
while True:
    try:
        v  = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : '))
    except :
        print 'Einen Integer bitte (1-9)'
        continue
    if v not in range(1,10):
        print ' Einen Integer von 1-9'
        continue
    else:
        print 'Gut gemacht'
        break
    finally:
        print "Finally, I executed!"

abra()

打开所有解决方案 - 谢谢

我相信您遇到的混乱来自第一个示例中的else

在"尝试/除外"中,阻止了区域tryexceptelsefinally都是有效的。这可能会误导新的程序员,因为elseif语句不同。

您可以在此处阅读:Python Try-Else

在您的第二个示例中,if语句不合时宜,因为它应该在整个try/except/else/finally块之外,要么正确地置于其中一个部分。

在您的特定示例中,您需要类似的东西:

def Abra():
    while True:
    try:
        v  = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : '))
        if v not in range(1,10):
            print ' Einen Integer von 1-9'
            continue
    except :
        print 'Einen Integer bitte (1-9)'
        continue
    else:
        print 'Gut gemacht'
        break
    finally:
        print "Finally, I executed!"

,尽管我可能建议您仅删除else即可避免对自己混淆(但这是上面链接中更好地讨论的论点):

def Abra():
    while True:
    try:
        v  = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : '))
        if v not in range(1,10):
            print ' Einen Integer von 1-9'
            continue
        print 'Gut gemacht'
        break
    except :
        print 'Einen Integer bitte (1-9)'
        continue
    finally:
        print "Finally, I executed!"

最终子句必须直接连接到try/try/def子句以使其工作。在第二个代码中,在try/deve和最后一个之间存在一个if/else。因此,结构是尝试/除外,如果/其他,最终是无效的。相比之下,首先,其他块是一个块,当异常未升高时执行,因此是try/deve的一部分 - 结构是try/exts/else/fine。

相关内容

  • 没有找到相关文章

最新更新