2016-06-25 1 views
1

저는 파이썬으로 포커 게임을 만들려고합니다. while fuction에서는 중고 카드를 별도의 중고 카드 목록으로 옮기고 싶습니다. 문제는 때로는 중복을 얻을 수있는 손을 인쇄 할 때입니다. 내 정렬 전략에 문제가있어 무엇이 있는지 모르겠습니다. 너 나 좀 도와 줄 수있어?포커 카드 게임을 위해리스트에서 다른 것으로 아이템 이동하기 파이썬

import random 

deck = ['AS', 'KS', 'QS', 'JS', '10S', '9S', '8S', '7S', '6S', '5S', '4S', '3S', '2S',\ 
     'AD', 'KD', 'QD', 'JD', '10D', '9D', '8D', '7D', '6D', '5D', '4D', '3D', '2D',\ 
     'AC', 'KC', 'QC', 'JC', '10C', '9C', '8C', '7C', '6C', '5C', '4C', '3C', '2C',\ 
     'AH', 'KH', 'QH', 'JH', '10H', '9H', '8H', '7H', '6H', '5H', '4H', '3H', '2H'] 

used = [] 
p1 = [] 
p2 = [] 
a = 0 

while (a < 2): 
    drawn_card = random.choice(deck) 
    deck.append(drawn_card) 
    deck = [f for f in deck if f not in used] 
    p1.append(drawn_card) 
    a+=1 

답변

1

잘 임의의 선택은 당신이 이렇게 할 때, 독특한이 보장되지 않습니다

drawn_card = random.choice(deck) 
.. 
p1.append(drawn_card) 

당신이 시간이 중복을보고 몇 가지 않는 것이 설명하는 (중복을 가진 끝낼 수 있습니다).

목록에서 drawn_card인지 확인하고 그렇지 않은 경우 추가하십시오. 그렇게하면 중복되지 않습니다. 로리 Daulton 말했듯이,

if drawn_card not in p1: 
    p1.append(drawn_card) 

을 또는 : 코드에서 당신은이 맘에 수 당신이 허용하는 경우

, 당신은 다음, 전체 덱을 셔플이 목록에서 연속 항목을 제거 할 수있다.

+0

@RoryDaulton 좋은 생각, 업데이트! 더 나아 졌니? :) – gsamaras

+1

@gsamaras 위대한 !! 이건 내 문제를 해결했습니다 :) – mariostoev

+0

네가 내 이름을 포함 할 필요는 없지만 네, 그게 더 낫습니다. 어쨌든 내 upvote를 얻을 수 있습니다. –

관련 문제