我在尝试处理回合顺序时一直收到不可修复的错误?

2024-09-29 17:17:11 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在尝试创建一个小的基于回合的程序,我想出了一些代码来确定玩家的回合顺序。然而,当我试图“根据玩家”确定敌人时,我遇到了一个问题。它不停地向我重复那个不可原谅的错误。有没有办法解决这个问题,让我得到我想要的结果,或者如果你对我的问题有更好的解决方案,请让我知道。代码如下:

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'

Tags: theforifrandomprintrandintsetstr
1条回答
网友
1楼 · 发布于 2024-09-29 17:17:11

set.difference()返回一个集合,因此EnemyOrder已经是一个集合。试一试

Enemy1Order = random.sample(EnemyOrder, 1)

Enemy1Order = random.sample(set(*[EnemyOrder]), 1)

相关问题 更多 >

    热门问题