2017-08-11 71 views
1

我在分類紙牌。我想輸入我有的牌,2H是2的心,3D是3的鑽石等等。然後用西裝將牌放在四個不同的列表中。到目前爲止,這只是我的代碼的一部分,問題是當我輸入多張卡片時,只有兩張卡片正在移動到新的套裝列表中。分類紙牌

cards = [str(x) for x in input().split()] 

cards = [A.replace('A', '1') for A in cards] 
cards = [J.replace('J', '11') for J in cards] 
cards = [Q.replace('Q', '12') for Q in cards] 
cards = [K.replace('K', '13') for K in cards] 

hearts = [] 
diamonds = [] 
clubs = [] 
spades = [] 

for i in cards: 
    if i in ['1H', '2H', '3H', '4H', '5H']: 
     hearts.append(i) 
     cards.remove(i) 
+0

如果你用'T'代替'10',你的生活會容易得多。 – tadman

+0

這只是我的代碼的精簡版本。我試圖找出爲什麼它不會將所有的H卡都添加到心臟列表中,它只會移動兩個。 –

+0

你給了什麼輸入? –

回答

2

如果4H, 3H, AH, 2H是你的輸入,那麼你需要的字符串分割,

cards = [str(x) for x in input().split(', ')] 

其他明智後來在在該行if i in ['1H', '2H', '3H', '4H', '5H']:僅環在cards的第一個元素將返回True因爲每元素之後有一個空格,並且3H不等於3H

二,這是一個很大的問題,不要修改你正在循環的列表。之後做cards.remove(i)

for i in cards: 
    if i in ['1H', '2H', '3H', '4H', '5H']: 
     hearts.append(i) 

for i in hearts: 
    cards.remove(i) 

print(cards) #will print [] 
print(hearts) #will print ['4H', '3H', '1H', '2H']