除了/ try子句错误检查用户是否有错误的颜色字符串?

时间:2013-12-08 22:37:06

标签: python turtle-graphics

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

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子句前面的错误颜色字符串没有用),因为我猜错颜色字符串错误没有构建到except子句中。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

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

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')

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

此外,上面的代码片段有一个bug。如果用户输入错误的颜色两次,那么你的 程序将再次崩溃,因为错误未在except块中捕获。解决方法是使用某种警报,说明except部分中的颜色无效,只读取{ {1}}部分

答案 1 :(得分:0)

输入始终有效。 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 =没有任何意义。