Python字符串拆分后for循环仅执行最后一个元素怎么处理?
代码问题修复说明
你的代码存在两个核心错误,修复后即可实现遍历执行所有绘图命令的效果:
- 缩进错误,循环体范围不正确
Python靠缩进判断代码块的从属关系,你当前写的for循环只包含了计算命令长度、过滤空命令的逻辑,后续提取命令类型、打印信息、调用绘图控制函数的代码全部没有缩进进for循环内部。这就导致循环只是遍历了所有命令但没有做任何处理,等循环结束后变量cmd只会保留列表最后一项的内容,仅执行一次后续逻辑,所以只输出了最后一项F102的结果。 - 传参错误,给变量名加了多余引号
你调用turtle_controller时写的是turtle_controller('cmd_type', num),给cmd_type加了引号相当于传的是固定字符串"cmd_type",而不是你前面提取出来的命令类型变量,所以程序识别不到有效命令,报错Unrecognized Command。
修复后完整代码
#String Artist def string_artist(program): cmd_list = program.split('-') print(cmd_list) #我添加该行用于确认拆分结果# for cmd in cmd_list: cmd_len = len(cmd) if cmd_len == 0: continue # 后续处理逻辑全部缩进,归入for循环内部 cmd_type = cmd[0] num = 0 if cmd_len > 1: num_string = cmd[1:] num = int(num_string) print(cmd, ':', cmd_type, num) # 去掉cmd_type的引号,传入变量本身 turtle_controller(cmd_type, num)
修复后再运行代码就会依次处理拆分出来的N、L90、F100、F101、F102所有命令,正常执行绘制逻辑。
内容的提问来源于stack exchange,提问作者KhangeeBowl
相关产品推荐
相关产品推荐

