所以我试图创建一个小型的转向程序,然后我想出了一些代码来确定玩家的转弯顺序。然而,当我试图根据玩家确定敌人时,我遇到了一个问题。它不断向我回复不可避免的错误。有没有办法解决这个问题,所以我得到了我想要的结果,或者如果你有更好的解决方案,请告诉我。这是代码:
Pm1Order = random.randint(1,8)
Pm2Order = random.randint(1,8)
if Pm2Order == Pm1Order:
Pm2Order = Pm1Order - 1
if Pm2Order == 0:
Pm2Order = Pm1Order + 1
Pm3Order = random.randint(1,8)
if Pm3Order == Pm2Order:
Pm3Order = Pm1Order - 2
if Pm3Order == 0:
Pm3Order = Pm1Order + 2
Pm4Order = random.randint(1,8)
if Pm4Order == Pm3Order:
Pm4Order = Pm1Order - 3
if Pm4Order == 0:
Pm4Order = Pm1Order + 3
print("The turn orders for your party is " +str(Pm1Order)+ " for the knight, " +str(Pm2Order)+ " for the theif, " +str(Pm3Order)+ " for the doctor, and " +str(Pm4Order)+ " for the priest.")
PlayerOrder = set([Pm1Order , Pm2Order , Pm3Order , Pm4Order])
print(str(PlayerOrder))
FullOrder = set([1, 2, 3, 4, 5, 6, 7, 8])
EnemyOrder = FullOrder.difference(PlayerOrder)
EnemyOrder2 = FullOrder.difference(PlayerOrder)
print(str(EnemyOrder))
Enemy1Order = random.sample(set([EnemyOrder]), 1)
print(Enemy1Order)
Traceback (most recent call last):
File "foo.py", line xx, in <module>
Enemy1Order = random.sample(set([EnemyOrder]), 1)
TypeError: unhashable type: 'set'
答案 0 :(得分:0)
set.difference()会返回一个集合,因此EnemyOrder
已经是一个集合。尝试
Enemy1Order = random.sample(EnemyOrder, 1)
或
Enemy1Order = random.sample(set(*[EnemyOrder]), 1)