이 BlackJack 프로그램을 수행하고 있으며 실행했을 때 Python이 다음과 같이 말합니다.
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
c2.bj_value()
File "/Users/xuanruizhang/Desktop/lab_class_design.py", line 47, in bj_value
s = PlayingCard(a,b)
NameError: name 'a' is not defined
그래서 문제는 bj_value (self) 함수에 있습니다. init 함수 에서 해당 순위 값을 반환하고 싶습니다 . 예 : c2 = PlayingCard (11, "c")이면 c2.bj_value ()는 10을 반환해야합니다.
class PlayingCard:
def __init__(self, rank, suit):
if rank == 1:
self.rank = "Ace"
elif rank == (2 or 3 or 4 or 5 or 6 or 7 or 8 or 9 or 10):
self.rank = rank
elif rank == 11:
self.rank = "Jack"
elif rank == 12:
self.rank = "Queen"
elif rank == 13:
self.rank = "King"
if suit == "h":
self.suit = "Hearts"
elif suit == "s":
self.suit = "Spades"
elif suit == "c":
self.suit = "Clubs"
elif suit == "d":
self.suit = "Diamonds"
def get_rank(self):
if self.rank == (2 or 3 or 4 or 5 or 6 or 7 or 8 or 9 or 10):
return self.rank
elif self.rank == "Ace":
return 1
elif self.rank == "Jack":
return 11
elif self.rank == "Queen":
return 12
elif self.rank == "King":
return 13
def get_suit(self):
if self.suit == "Hearts":
return "h"
elif self.suit == "Jack":
return "j"
elif self.suit == "Clubs":
return "c"
elif self.suit == "Diamonds":
return "d"
def bj_value(self):
s = PlayingCard(a, b)
if s.a == 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8 or 9 or 10:
return s.a
elif s.a == 11 or 12 or 13:
return 10
def __repr__(self):
return '%s of %s' % (self.rank, self.suit)
def main():
if __name__ == '__main__':
main()
감사합니다!
새 클래스를 인스턴스화 할 필요가 없습니다. 원래 순위 값을 변수로 저장합니다 (이름 값 Jack, Queen 등을 저장하는 변수의 이름을 바꿔야합니다. bj_value 함수 내에서 self.rank에 액세스합니다.
class PlayingCard:
def __init__(self, rank, suit):
self.rank = rank
if rank == 1:
self.card = "Ace"
elif rank in range(2, 11):
self.card = str(rank)
elif rank == 11:
self.card = "Jack"
elif rank == 12:
self.card = "Queen"
elif rank == 13:
self.card = "King"
if suit == "h":
self.suit = "Hearts"
elif suit == "s":
self.suit = "Spades"
elif suit == "c":
self.suit = "Clubs"
elif suit == "d":
self.suit = "Diamonds"
....
def bj_value(self):
if self.rank in range(1,11):
return self.rank
elif self.rank in range(11,14):
return 10
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다