except/try子句错误地检查用户是否有错误的颜色字符串



如果用户在我制作的dragon分形程序中输入了一个糟糕的颜色字符串,它当然会崩溃。我的解决方案是:

while True:
    try:
        color = turtle.textinput('You can ride it!','What color dragon would you like?')
        break
    except:
        color = turtle.textinput('Try again?!?!?!','Dragons don't come in that color :P')

但是except语句从来没有被触发过(不,在except子句前面说坏颜色字符串没有帮助),因为我猜坏颜色字符串错误并没有被构建到exception子句中。有什么帮助吗?

try-except用于捕获错误。导致错误的代码部分必须放入try块中。如果try部分出现错误,则except部分将被执行。

while True:
    try:
        color = turtle.textinput('You can ride it!','What color dragon would you like?')
        #code that causes error,or raises exception,maybe code to ride a dragon 
        #that has an invalid color
    except:
        color = turtle.textinput('Try again?!?!?!','Dragons don't come in that color :P')

并且您不需要try块中的break语句。

此外,上面的代码片段有一个错误。如果用户两次输入错误的颜色,则程序将再次崩溃,因为except块中没有捕捉到错误。一种解决方法是使用某种警报,表示except部分的颜色无效,并仅在try部分读取输入

输入始终有效。turtle.textinput不会引发错误,它将始终返回输入,如果没有输入,则返回None

尝试以下操作:

while True:
    try:
        color = turtle.textinput('You can ride it!','What color dragon would you like?')
        turtle.pencolor(color)
        break
    except:
        color = turtle.textinput('Try again?!?!?!','Dragons don't come in that color :P')

请注意,还有另一个问题,如果转到异常,输入将被丢弃。这是因为您没有脱离except中的循环,所以一旦用户编写了一些内容,您将返回到try块。也许这就是你想要做的,但color =没有任何意义。

最新更新