如果用户在我制作的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 =
没有任何意义。