2016-10-02 4 views
0

그래서 저는 Python에 대한 연습을했습니다. BlackJack 게임을 작성했습니다. 나는 게임의 모든 문구가 어떻게 갈 것인지를 정의하는 것으로 시작했다. 이제 아래에서이 코드를 실행할 때 입력이 '0'인 경우 - 카드를 더 이상 원하지 않는다는 의미로 완벽하게 실행됩니다. 그러나 입력이 '1'일 때 - 당신이 카드를 선택하려는 의미, 내가 오류 얻을 :PYTHON : AttributeError : 'int'객체에 'hand'속성이 없습니다.

Traceback (most recent call last): 
    File "C:/Users/Maymon/PycharmProjects/untitled4/BlackJack.py", line 1, in <module> 
    class blackjack(object): 
    File "C:/Users/Maymon/PycharmProjects/untitled4/BlackJack.py", line 34, in blackjack 
    player(1) 
    File "C:/Users/Maymon/PycharmProjects/untitled4/BlackJack.py", line 25, in player 
    PickCard(1) 
    File "C:/Users/Maymon/PycharmProjects/untitled4/BlackJack.py", line 18, in PickCard 
    self.hand+= random.randrange(1, 13) 
AttributeError: 'int' object has no attribute 'hand' 

코드 : 사전에

class blackjack(object): 

    #this func defines how player should react 
    def player(self): 

     #this func defines what case of technical loosing 
     def loser(): 
      print("You have reached", hand , ". Which is beyond 21. Therefor, you have lost the game. Better luck next time!") 


     #this func is responsible for picking card issue. 
     def PickCard(self): 
      import random 
      x=1 
      while x == 1: 
       pick = int(raw_input("Enter 1 if you want another card, else Enter 0")) 
       if pick == 1: 
        self.hand = self.hand + random.randrange(1, 13) 
       else: 
        x=0 
     import random 
     print "Now your first card will automatically be given to you:" 
     hand=random.randrange(1,13) 
     print "hand: ", hand 
     PickCard(1) 
     print hand 
     if hand>21: 
      loser() 
     elif hand==21: 
      pass 
     else: 
      pass 

    player(1) 

감사합니다.

+0

'self' 그 기능의 정수 당신은 전화 때문에,'PickCard (1)'. 나는 왜 그것이 당신이 '자기'라는 이름을 사용했는지 모르겠습니다. –

답변

0

player 함수의 인수가 self 유형 .i.e 인 것으로 예상하는 경우 함수 호출을 player(1)으로 호출합니다. 클래스 blackjack의 인스턴스입니다. 따라서 self.hand = self.hand + random.randrange(1, 13)을 수행하는 동안 위에서 언급 한 오류가 발생합니다.


나는는, 당신은 클래스 내에서 player() 함수에 대한 호출을 만들고 싶어하지 않는 것 같아? 그 부분을 수업 외부로 옮기십시오. 먼저 클래스 blackjack의 객체를 만듭니다 (참고 : Python에서는 클래스 이름을 BlackJack과 같은 CamelCase 변수로 정의해야합니다). 예를 들면 다음과 같은
blackjack_obj = blackjack() 

는 그 다음 player() 함수를 호출 :

blackjack_obj.player() 
+0

먼저 감사드립니다. 이제는 클래스 외부에서 호출 플레이어()를 호출 할 수 없습니다. 나는 당신이 'code'(blackjack_obj) 'code'에 대해 무엇을 의미하는지 이해하지 못했고, "self"에 대해서는 –

+0

blackjack이 클래스이다. 'blackjack_obj = blackjack()'에 의해'blackjack_obj'라는 블랙 잭의 객체를 만들고 있습니다. 이제 클래스 객체를 사용하여 클래스 내에 정의 된 함수를 호출 할 수 있습니다. –

+0

[Python Class Objects] (https://docs.python.org/3/tutorial/classes.html#class-objects)를 참조하여 클래스와 그 객체에 대한 명확성을 얻으십시오. –

관련 문제