我正在帮助我的一位前老师,需要有关此代码的帮助。我正在编写一个 python 程序,可以制作 30 张独特的卡片。 10 个是红色,10 个是黑色,10 个是黄色。我只在代码中使用了红色,以便于调试。我需要用我认为有效的功能来制作它们,但随后我需要分发它们并在最后显示它们,但玩家的手不能彼此相同,并且他们自己的手上不能有重复的东西(就像你在实际版本)。所以我需要设置一个检查系统。我真的找不到问题所在,并且希望有一双新的眼睛,因为这可以轻松解决它,否则它超出了我的能力范围。感谢您的阅读。
附注 我知道每个玩家都有两张牌,但这是在玩家赢得一场战斗时添加的,这样我就可以比较谁拥有最多的牌以及最后有哪些牌。
我尝试使用不同的循环对其进行更改,并将其编写为伪代码并进行比较,但不知道发生了什么。
{import sys, random, time
this = sys.modules[__name__]
def redCardGen():
for i in range(0,11, 1):
setattr(this, 'R%s' % i, 'Red Card %s' % i)
def blackCardGen():
for i in range(0,11, 1):
setattr(this, 'B%s' % i, 'Black Card %s' % i)
def yellowCardGen():
for i in range(0,11, 1):
setattr(this, 'Y%s' % i, 'Yellow Card %s' % i)
redCardGen()
blackCardGen()
yellowCardGen()
breaker = 0
player1Hand = []
player2Hand = []
WinnnerDeck = []
WinnerDeck2 = []
Red = [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10]
play = input("Would you like to play the game?: ")
if(play == "yes"):
print("Okay, then lets play!")
else:
exit()
for i in range(0,6, 1):
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
breaker1 = 0
while(breaker1 == 0):
if (player1Hand != 5):
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
elif ((len(set(player1Hand))==1) and (len(set(player2Hand))==1)):
player1Hand.pop()
player2Hand.pop()
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
elif ((len(set(player1Hand and player2Hand)) == 1)):
player1Hand.pop()
player2Hand.pop()
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
else:
breaker1 = 1
print(player1Hand)
print(player2Hand)}
没有错误,所以我不认为这是语法问题,而是逻辑错误。 我的预期结果是有两名玩家手上有随机牌,但没有一张是相同的。
最佳答案
使用 random.shuffle() 分发卡片的示例:
import random
deck = ["R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "R10"]
random.shuffle(deck)
player1_hand = deck[:5]
player2_hand = deck[5:10]
print(player1_hand)
print(player2_hand)
返回:
['R4', 'R2', 'R10', 'R5', 'R1']
['R7', 'R8', 'R9', 'R3', 'R6']
关于python - 这个程序在逻辑上是错误的还是有我似乎找不到的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56328521/