我正在使用Python(在PyCharm上运行)编写一个基于文本的简单RPG战斗模拟器。我创建了一个名为Person的类,它具有以下初始化参数:
def __init__(self, name, HP, MP, ATK, DEF, magic, items):
self.name = name
self.HP = HP
etc...
该类在main
中为3个独特的玩家(player1, player2, player3
)实例化3次。我还有一个功能get_stats(self)
可以实现
print(self.name + ", HP: " + self.HP + ", MP: " + self.MP)
但是当我运行main
for player in players:
player.get_stats()
在players = {player1, player2, player3}
处,得到输出(请注意,MP / HP值是任意的):
name2, HP: 200, MP: 200
name3, HP: 300, MP: 300
name1, HP: 100, MP: 100
如果是players = {player0, player1, player2, player3}
,我得到的输出是:
name2, HP: 200, MP: 200
name3, HP: 300, MP: 300
name0, HP: 400, MP: 400
name1, HP: 100, MP: 100
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
fPm=open('primepm.csv', 'w')
writerPm = csv.writer(fPm)
writerPm.writerow(['P^m','Pm'])
p=2
countpm=0
while p<2^8:
for m in range(8):
if (p^m>=256 and p^m<1000):
writerPm.writerow([str(factor(p^m)),str(p^m)])
countpm=countpm+1
p=next_prime(p)
if countpm==100:
break
在python中创建一个{}
,该命令没有顺序:元素的输入方式没有存储。
您需要一个列表,该列表可以创建为:
set
或元组:
players = [player1, player2, player3]
答案 1 :(得分:1)
您使用的{}
语法适用于Python中的set
。集合没有顺序,并且在for
语句中使用时会随机产生其成员。
只需保持一致,并使用(Player0, ...)
表示一个元组,或使用[Player0, ...]
表示一个列表-这两种类型都是“序列”,具有明确定义的顺序。