Python绘制精灵时输入undo触发int()十进制报错及字符串未追加问题
问题成因
- 输入判断逻辑顺序错误
循环内先执行ag == 'undo'的判断,再执行input()读取用户输入。首次进入循环时ag变量未定义,后续循环判断的永远是上一轮的输入值,无法及时响应当前输入的undo指令。 - undo执行逻辑存在两处错误
- 代码中写的是
list.pop(-1),调用的是Python内置list类的方法而非操作存储绘制数据的rl列表,无法实现撤回效果。 - undo判断分支内加了
break,执行后会直接退出循环,不符合撤回后继续操作的预期。
- 代码中写的是
- 未过滤指令字符串就追加到绘制列表
无论用户输入的是正常绘制参数、undo还是exit,都会无条件执行rl.append(ag)把输入内容追加到绘制列表。当undo字符串进入列表后,CreateImag函数遍历列表时会尝试把undo用int()转换为数字,直接触发类型转换报错。 - 隐藏bug补充:
触发exit指令后,打开文件用了默认只读模式,没有加'w'写入参数,执行写入操作时会直接报错。
内容的提问来源于stack exchange,提问作者user15684361
相关产品推荐
相关产品推荐

