【发布时间】:2017-10-27 22:34:56
【问题描述】:
所以我在其他地方寻求帮助,但找不到任何解决方案。我创建了一个包含 51 个元素的列表,并希望在该列表中选择 10 个随机的不同位置,并能够更改这些位置的值(您可以在 assignCard(person) 函数下看到这一点)。由于我使用的是数字索引,因此我不能使用诸如random.sample 之类的方法或将随机数放入set(),因为我收到一条错误消息。我已经在下面发布了我的代码,请随意复制并运行它以查看输出,除了重复数字外,一切正常,所以如果可能,请不要在答案中大幅更改代码。
""" cardGame.py
basic card game framework
keeps track of card locations for as many hands as needed
"""
from random import *
import random
NUMCARDS = 52
DECK = 0
PLAYER = 1
COMP = 2
cardLoc = [0] * NUMCARDS
suitName = ("hearts", "diamonds", "spades", "clubs")
rankName = ("Ace", "Two", "Three", "Four", "Five", "Six", "Seven",
"Eight", "Nine", "Ten", "Jack", "Queen", "King")
playerName = ("deck", "player", "computer")
def main():
clearDeck()
for i in range(5):
assignCard(PLAYER)
assignCard(COMP)
print(cardLoc)
print("# " + " card " + " location")
showDeck()
print("\nDisplaying player hand:")
showHand(PLAYER)
print("\nDisplaying computer hand:")
showHand(COMP)
def clearDeck():
cardLoc = [0] * NUMCARDS
def assignCard(person):
x = random.randint(0, 51)
cardLoc[x] = person
def showDeck():
for i in range(NUMCARDS):
y = rankName[i % 13]
z = suitName[int(i / 13)]
a = cardLoc[i]
b = playerName[a]
print("{:<4}{:<4} of {:<14}{:<7}".format(str(i), y, z, b))
def showHand(person):
for i in range(NUMCARDS):
if cardLoc[i] == person:
print(rankName[i % 13] + suitName[int(i / 13)])
main()
【问题讨论】:
标签: python random position indexof