我想注意我正在使用Discord.py,其中一些包含了lib。
所以我正在尝试检查列表中的索引是否存在,但我不断得到ValueError
说我的列表中不存在该索引。
这是我的代码:
def deal_card(self):
U = self.usedCards
randCard = randchoice(list(self.cards))
if not U: #check if it is empty
#if it is empty, just add the card to used cards
U.append(randCard)
elif U.index(randCard): #check if card is already in the list
#if it is, pick another one
randCard = randchoice(list(self.cards))
U.append(randCard)
else: #check if card is not in list
#if it is not, just add it to the used cards
U.append(randCard)
return randCard
self.cards
充满了卡片名称,self.usedCards
是randCard选择的卡片列表。
hand
是我的命令,P4
是self.cards
我找到了一些解决方案,说添加try
块会解决问题,但我不知道如何在if语句中添加它。
提前致谢!
答案 0 :(得分:4)
list.index()
应该用于查找列表成员的索引。要检查列表中的项目是否,只需使用in
:
if not U:
# do stuff
elif randCard in U:
# do other stuff
答案 1 :(得分:2)
这可能是处理你的牌的一种可怕的方法,因为你的牌中你的弃牌堆和都有牌。
为什么不直接移动卡片?
import random
cards = ['H{}'.format(val) for val in range(1, 11)]
print(cards)
discard_pile = []
while cards:
random.shuffle(cards)
card = cards.pop()
print('You drew a {}'.format(card))
discard_pile.append(card)
while discard_pile:
cards.append(discard_pile.pop())
# or
cards.extend(discard_pile)
discard_pile.clear()
答案 2 :(得分:1)
您不需要使用索引函数:
elif randCard in U:
答案 3 :(得分:1)
如果由于某种原因仍希望使用.index
功能而不遵循上述建议,则可以使用try
语句,如下所示:
try:
c = U.index(randCard)
randCard = randchoice(list(self.cards))
U.append(randCard)
except ValueError:
U.append(randCard)