【发布时间】:2017-12-25 04:11:30
【问题描述】:
CPU 和用户得到重复卡。我使用了 shuffle 功能,以及 pop。有没有办法防止用户和 CPU 获得重复卡。
这里是编译的程序示例
这是你的卡片: 1) 俱乐部 10 2)钻石4 3)钻石6 4) 俱乐部 7 5) 俱乐部 10 要玩牌,只需一次输入他们的第一名。完成后,输入空白 2 1 3 4
你玩过: 钻石之四 俱乐部 10 钻石6 俱乐部 7 人
CPU 播放: 黑桃杰克 黑桃J
如您所见,提示用户重复“随机”牌,CPU 播放重复的“随机”牌。
import random
import math
print("Gui-less poker sucks, but it sure is addicting probably")
if 1:
hcardss = [""]
hcardsc = [""]
hcardsh = [""]
ccardss = [""]
ccardsc = [""]
ccardsh = [""]
ingame = "true"
while (ingame == "true"):
undone = 5
while (undone > 0):
card = random.randint(1,52)
# print(card)
temp = card / 13
temp2 = card / 4
temp = math.floor(temp)
temp2 = math.floor(temp2)
temp = temp + 1
# temp2 = temp2 + 1
#print(temp)
#print(temp2)
# undone -= 1
hcardss.append(temp)
hcardsc.append(temp2)
if (temp == 1):
temp3 = " of Spades"
elif (temp == 2):
temp3 = " of Diamonds"
elif (temp == 3):
temp3 = " of Clubs"
else:
temp3 = " of Hearts"
if (temp2 == 10):
temp4 = "Jack"
elif (temp2 == 11):
temp4 = "Queen"
elif (temp2 == 12):
temp4 = "King"
elif (temp2 == 13):
temp4 = "Ace"
else:
temp4 = str(temp2 + 1)
# print("Your card was the " + temp4 + temp3)
hcardsh.append("The " + temp4 + temp3)
undone -= 1
undone = 5
while (undone > 0):
# THIS ONE IS THE COMPUTER
card = random.randint(1,52)
# print(card)
temp = card / 13
temp2 = card / 4
temp = math.floor(temp)
temp2 = math.floor(temp2)
temp = temp + 1
# temp2 = temp2 + 1
#print(temp)
#print(temp2)
# undone -= 1
ccardss.append(temp)
ccardsc.append(temp2)
if (temp == 1):
temp3 = " of Spades"
elif (temp == 2):
temp3 = " of Diamonds"
elif (temp == 3):
temp3 = " of Clubs"
else:
temp3 = " of Hearts"
if (temp2 == 10):
temp4 = "Jack"
elif (temp2 == 11):
temp4 = "Queen"
elif (temp2 == 12):
temp4 = "King"
elif (temp2 == 13):
temp4 = "Ace"
temp4 = str(temp2 + 1)
# print("Your card was the " + temp4 + temp3)
ccardsh.append("The " + temp4 + temp3)
undone -= 1
print()
print()
print()
print("Here are your cards:")
print("1) " + hcardsh[1])
print("2) " + hcardsh[2])
print("3) " + hcardsh[3])
print("4) " + hcardsh[4])
print("5) " + hcardsh[5])
print("To play cards, simply type their number one at a time. When done, input blank")
doneinput = "false"
hplay = [""]
while (doneinput == "false"):
latestinput = input("> ")
if (latestinput == ""):
doneinput = "true"
else:
if (int(latestinput) in hplay):
print("You already picked that one!")
else:
hplay.append(int(latestinput))
# print("The cards you played are " + str(hplay))
doneinput = "false"
cplay = [""]
while (doneinput == "false"):
latestinput = random.randint(1,5)
if (latestinput == ""):
doneinput = "true"
else:
if (int(latestinput) in cplay):
doneinput = "true"
else:
cplay.append(int(latestinput))
#print("So you played " + str(hplay))
#print("And the cpu played " + str(cplay))
#print("So you played the " + hcardsh[hplay[1]] + hcardsh[hplay[2]]
times = len(hplay)
# times = times - 1
hplayh = [""]
cplayh = [""]
sub = 1
print()
print()
print("You played:")
while (sub < times):
hplayh.append(hcardsh[hplay[sub]])
print(hcardsh[hplay[sub]])
sub += 1
sub = 1
times = len(cplay)
print()
print()
print("CPU played:")
while (sub < times):
cplayh.append(ccardsh[cplay[sub]])
print(ccardsh[cplay[sub]])
sub += 1
#print(str(hplayh))
#print(str(cplayh))
ingame = "false"
【问题讨论】:
-
为了使用
random.shuffle(),您应该生成一个包含 52 张卡片的列表,然后对该列表应用洗牌功能。然后您使用.pop()函数挑选卡片。
标签: python random shuffle poker playing-cards