python - 这个程序在逻辑上是错误的还是有我似乎找不到的语法?

标签 python

我正在帮助我的一位前老师,需要有关此代码的帮助。我正在编写一个 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/

相关文章:

python - 创建数据框中不存在的时间间隔

python - matplotlib 忽略 locator_params nticks 命令

python - python从字符串中获取函数

python - 在 Tkinter 中循环遍历小部件

python - 将两个 csv 文件的值和结果相加到一个新文件中

python - 如何提高 Sklearn GMM predict() 性能速度?

python - 如何使用python从以列中的数字开头的字符串中提取数字

Python - 创建集合列表或集合列表?

python - 根据日期组合多个文件夹中的多个 Txt 文件

python - 在 python 中,根据函数变量更改 MySQL 查询