2014-09-24 4 views
0

시작하기 전에 저는 Python을 처음 접했습니다."또는"while 루프가 작동하지 않습니다 - Python

이 코드는 나중에 'Go Fish'게임에서 사용되는 5 개의 카드 손을 만드는 것으로되어 있습니다. 나중에 많은 변수가있는 이유는 나중에 게임을하기위한 것이므로 가능한 경우 혼란 스러움을 무시하십시오.

분명히 정상적인 카드 더미에 각 카드 중 하나만 있기 때문에 카드를 반복 할 수 없습니다. 두 개의 카드가 같은 손을 만드는 것을 피하기 위해 while 루프를 사용했습니다 (코드에서 볼 수있는 것처럼). 나는 while 루프에 문제가있는 것 같다. '또는'구문은 쉘에서 실행되지 않는 코드에서 문제를 일으키는 것 같습니다 ('>>>'는 나타나지 않고 빈 커서 만 나타납니다).

실행 문제를 해결하려면, 나는 등호

예를 들어

사용할 수있는 코드 변경 :

: 를 P55의 == P11 == P22 == P33 == P44 동안

그러나 코드를 실행할 때 여전히 중복 된 카드가 있습니다.

누구든지이 중복 오류를 해결하는 방법을 알아 내면 도움이 될 것입니다.

미리 감사드립니다.

def player_hand(): 
    CardSuit = ['Hearts','Diamonds','Clubs','Spades'] 
    CardNum = ['Ace','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','Queen','King'] 

    PlayerHand = [] 

    p1 = str(random.choice(CardNum)) 
    p11 = p1, 'of', str(random.choice(CardSuit)) 
    p111 = " ".join(p11) 
    PlayerHand.append(p111) 

    p2 = str(random.choice(CardNum)) 
    p22 = p2, 'of', str(random.choice(CardSuit)) 
    while p22 == p11 : 
     p2 = str(random.choice(CardNum)) 
     p22 = p2, 'of', str(random.choice(CardSuit)) 
    p222 = " ".join(p22) 
    PlayerHand.append(p222) 

    p3 = str(random.choice(CardNum)) 
    p33 = p3, 'of', str(random.choice(CardSuit)) 
    while p33 == p11 or p22 : 
     p3 = str(random.choice(CardNum)) 
     p33 = p3, 'of', str(random.choice(CardSuit)) 
    p333 = " ".join(p33) 
    PlayerHand.append(p333) 

    p4 = str(random.choice(CardNum)) 
    p44 = p4, 'of', str(random.choice(CardSuit)) 
    while p44 == p11 or p22 or p33 : 
     p4 = str(random.choice(CardNum)) 
     p44 = p4, 'of', str(random.choice(CardSuit)) 
    p444 = " ".join(p44) 
    PlayerHand.append(p444) 

    p5 = str(random.choice(CardNum)) 
    p55 = p5, 'of', str(random.choice(CardSuit)) 
    while p55 == p11 or p22 or p33 or p44 : 
     p5 = str(random.choice(CardNum)) 
     p55 = p5, 'of', str(random.choice(CardSuit)) 
    p555 = " ".join(p55) 
    PlayerHand.append(p555) 

    return PlayerHand 
+2

참고로,'in' 연산자로 원하는 것과 많은 비교를 할 수 있습니다. 예를 들면,'p55 in (p11, p22, p33, p44) :'중에. –

+0

또는 모든 정보가 PlayerHand 변수에 있기 때문에 PlayerHand에서 p55를 실행하면됩니다. ' –

답변

3
p33 == p11 or p22 

이 질문의이 유형은 여기 자주 온다 one such example입니다

p33 == p11 or p33 == p22 

와 동일하지 않습니다. 첫 번째 경우는 작동하지 않습니다

이유는 :

p33 == p11 or p22 

p22의 truthiness 별도로 평가된다

(p33 == p11) or (p22) 

주의로 나뉩니다.

+0

'(p33 == p11) 또는 (p22)' – TML

+0

Ok라고 말한 것처럼 전자는 읽습니다. 고마워요! –

관련 문제