Python中如何指定对象并执行移动操作?是否有替代重复if-else语法的方法
在Python中通过索引指定turtle对象的可行方法
嘿,这个问题我太懂了!你现在写的asdf[a].goto(0, 0)会报错,因为asdf是单个turtle实例,不是可索引的容器(比如列表、字典),自然没法用下标访问。完全不用靠一堆if-else来堆代码,给你两种简单好用的方案:
方案一:用列表存储所有turtle对象
这是最常用也最简洁的方式,把所有turtle(包括初始的和克隆的)都放进一个列表里,直接通过索引就能访问:
import turtle import random # 创建初始海龟 asdf = turtle.Turtle() # 把初始海龟和克隆的对象统一存入列表 turtles = [asdf, asdf.clone(), asdf.clone(), asdf.clone()] # 生成对应列表索引的随机数(列表索引从0开始,所以范围是0-3) a = random.randrange(0, 4) # 通过索引直接指定对象并调用方法 turtles[a].goto(0, 0)
如果你的需求里a必须是1-4的数字,也没问题,只需要把随机数调整为a = random.randrange(1, 5)(randrange是左闭右开区间,1-5会生成1、2、3、4),然后用turtles[a-1].goto(0, 0)就可以了。
方案二:用字典映射数字和turtle对象
如果你想保留原来的单个变量名,也可以用字典把数字和对应的turtle对象绑定起来,通过键来访问:
import turtle import random asdf = turtle.Turtle() asdf1 = asdf.clone() asdf2 = asdf.clone() asdf3 = asdf.clone() # 用字典建立数字到对象的映射 turtle_map = { 1: asdf, 2: asdf1, 3: asdf2, 4: asdf3 } a = random.randrange(1, 5) # 通过键直接获取对象并调用方法 turtle_map[a].goto(0, 0)
这两种方法都能完美替代繁琐的if-else判断,以后要添加更多克隆对象也很方便——列表直接追加,字典直接加键值对就行,不用改逻辑代码。
内容的提问来源于stack exchange,提问作者subinjeon
相关产品推荐
相关产品推荐

