[英]python for loops being started at 1st element no 0th element
我正在使用 Python(在 PyCharm 上运行)编写一个简单的基于文本的 RPG 战斗模拟器。 我创建了一个名为 Person 的 class,其初始化参数如下:
def __init__(self, name, HP, MP, ATK, DEF, magic, items):
self.name = name
self.HP = HP
etc...
这个 class main
为 3 个独特的玩家( player1, player2, player3
)实例化 3 次。 我也有一个 function get_stats(self)
print(self.name + ", HP: " + self.HP + ", MP: " + self.MP)
但是当我在main
中运行时
for player in players:
player.get_stats()
其中players = {player1, player2, player3}
,我得到 output (注意 MP/HP 值是任意的):
name2, HP: 200, MP: 200
name3, HP: 300, MP: 300
name1, HP: 100, MP: 100
如果players = {player0, player1, player2, player3}
,我得到 output:
name2, HP: 200, MP: 200
name3, HP: 300, MP: 300
name0, HP: 400, MP: 400
name1, HP: 100, MP: 100
为什么会发生这种情况,我该如何解决?
{}
在 python 中创建一个未排序的set
:元素未按输入方式存储。
您需要一个列表,可以创建为:
players = [player1, player2, player3]
或元组:
players = (player1, player2, player3)
您正在使用用于 Python 中的set
的{}
语法。 集合没有顺序,在for
语句中使用时会随机产生其成员。
只需保持一致并使用(Player0, ...)
表示元组,或[Player0, ...]
表示列表 - 这两种类型都是“序列”,具有明确定义的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.