如果用户在我制作的龙分形程序中输入了错误的颜色字符串,当然它会崩溃。我的解决方案是:
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子句中。有什么帮助吗?
答案 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 =
没有任何意义。