在我的一个编程作业范围内,我不得不创造一种战舰游戏。
其中一条指令必须创建一个代表潜艇的清单,这个清单将每个潜艇都包含在一个字典中,潜艇在棋盘游戏中的位置以及健康指向潜艇。
我还提到我必须用循环创建它,这样潜艇的数量可以随意改变:
nb_subs = 4
submarines = []
for sub_id in range (nb_subs):
submarines.append({'sub_' + str(sub_id) : {'position':str(rand(0,4)) + str(rand(0,4)) , 'life':2}})
此代码正常工作,您可以看到位置由一个字符串表示,例如'00','14'等,以便可以通过选择字符串的索引来获取,就像这样:
submarines[0]['sub_0']['position'][0]
这样我就得到了潜艇的“横坐标”。
但关键是我不知道如何只修改潜水艇位置的“横坐标”或“纵坐标”。
我试着修改其中一艘潜艇的“横坐标”:
submarines[0]['sub_0']['position'][0] = str(int(submarines[0]['sub_0']['position'][0])+1)
但我最终收到此错误消息:
TypeError Traceback (most recent call last)
<ipython-input-17-670be0bd7cb8> in <module>()
----> 1 submarines[0]['sub_0']['position'][0] = '5'
TypeError: 'str' object does not support item assignment
我知道我可以像这样修改整个字符串:
submarines[0]['sub_0']['position'] = '22'
但重点是回到对应于关键字'position'的字符串中包含的元素[0]。
有人可以帮我吗?
谢谢!