在开始之前,我对python很新。
这段代码可以创建一张5张牌,稍后将用于“Go Fish'”游戏中。之所以有这么多变量的原因是为了以后的目的,所以请尽可能忽略这种混乱。
显然,卡片无法重复,因为普通卡片组中的每张卡片中只有一张卡片。为了避免使用两张相同的卡创建一只手,我使用了while循环(正如您在代码中看到的那样)。我似乎遇到了while循环的问题。 '或'语句似乎在代码中创建了一个问题,它不会在shell中执行('>>>'甚至不会出现,只是一个空白的光标)。为了解决执行问题,我将代码更改为使用等号
例如: 虽然p55 == p11 == p22 == p33 == p44:
然而,在运行代码时,我仍然会遇到重复的卡片。
如果有人可以帮我弄清楚如何解决这个重复错误,那就太棒了。
提前谢谢!
def player_hand():
CardSuit = ['Hearts','Diamonds','Clubs','Spades']
CardNum = ['Ace','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','Queen','King']
PlayerHand = []
p1 = str(random.choice(CardNum))
p11 = p1, 'of', str(random.choice(CardSuit))
p111 = " ".join(p11)
PlayerHand.append(p111)
p2 = str(random.choice(CardNum))
p22 = p2, 'of', str(random.choice(CardSuit))
while p22 == p11 :
p2 = str(random.choice(CardNum))
p22 = p2, 'of', str(random.choice(CardSuit))
p222 = " ".join(p22)
PlayerHand.append(p222)
p3 = str(random.choice(CardNum))
p33 = p3, 'of', str(random.choice(CardSuit))
while p33 == p11 or p22 :
p3 = str(random.choice(CardNum))
p33 = p3, 'of', str(random.choice(CardSuit))
p333 = " ".join(p33)
PlayerHand.append(p333)
p4 = str(random.choice(CardNum))
p44 = p4, 'of', str(random.choice(CardSuit))
while p44 == p11 or p22 or p33 :
p4 = str(random.choice(CardNum))
p44 = p4, 'of', str(random.choice(CardSuit))
p444 = " ".join(p44)
PlayerHand.append(p444)
p5 = str(random.choice(CardNum))
p55 = p5, 'of', str(random.choice(CardSuit))
while p55 == p11 or p22 or p33 or p44 :
p5 = str(random.choice(CardNum))
p55 = p5, 'of', str(random.choice(CardSuit))
p555 = " ".join(p55)
PlayerHand.append(p555)
return PlayerHand
答案 0 :(得分:3)
p33 == p11 or p22
这与
不同p33 == p11 or p33 == p22
这类问题经常出现,现在是one such example。
第一种情况不起作用的原因:
p33 == p11 or p22
闯入
(p33 == p11) or (p22)
请注意p22
的真实性是单独评估的。