내기를 사용하려면이 텍스트 북에서이 프로그램을 수정해야하지만 원래 프로그램을 실행할 수 없습니다. 이 책은 각 학급이 다른 페이지에있는 것을 제외하고는 책에 나와있는 프로그램입니다. 교수님이 블랙 잭 프로그램을 가져 와서 베팅을 수락한다고 말했기 때문에 모든 수업을 타이핑해야할지 모르겠지만 갑판과 카드를 가져와 잘 모르겠습니다. 나는 그것이 잘못한 것 같지 않다고 생각했기 때문에 그들을 위해 타이핑했다.속성 오류 블랙 잭 파이썬 (고정)
class Card(object):
RANKS=(1,2,3,4,5,6,7,8,9,10,11,12,13)
SUITS=('Spades','Diamonds','Hearts','Clubs')
def _init_(self,rank,suit):
self.rank=rank
self.suit=suit
def _str_(self):
if self.rank==1:
rank='Ace'
elif self.rank==11:
rank='Jack'
elif self.rank==12:
rank='Queen'
elif self.rank==13:
rank='King'
else:
rank=self.rank
return str(rank)+ ' of ' + self.suit
import random
class Deck(Card,object):
def _init_(self):
self._cards=[]
for suit in Card.SUITS:
for rank in Card.RANKS:
c=Card(rank,suit)
self._cards.append(c)
def shuffle(self):
random.shuffle(self._cards)
def deal(self):
if len(self)==0:
return None
else:
return self._cards.pop(0)
def _len_(self):
return len(self._cards)
def _str_(self):
result=''
for c in self._cards:
result= result+str(c)+'\n'
return result
class Player(Deck,object):
def _init_(self, cards):
self._cards= cards
def _str_(self):
result=",".join(map(str,self._cards))
results += "\n " + str(self.getPoints()) + " points"
return result
def hit(self,card):
self._cards.append(card)
def getPoints(self):
count=0
for card in self._cards:
if card.rank>9:
count+=10
elif card.rank==1:
count+=11
else:
count+=card.rank
for card in self._cards:
if count <=21:
break
elif card.rank==1:
count -= 10
return count
def hasBlackjack(self):
return len(self._cards)==2 and self.getpoints()==21
class Dealer(Player,object):
def _init_(self,cards):
Player._init_(self,cards)
self._showOneCard= True
def _str_(self):
if self._showOneCard:
return str(self._cards[0])
else:
return Player._str_(self)
def hit(self,deck):
self._showOneCard= False
while self.getPoints() <17:
self.Cards.append(deck.deal())
class Blackjack(Player, object):
def _init_(self):
self._deck = Deck()
self._deck.shuffle()
self._player = Player([self._deck.deal(),
self._deck.deal()])
self._dealer = Dealer([self._deck.deal(),
self._deck.deal()])
def play(self):
print ("Player:\n", self._player)
print ("Dealer:\n", self._dealer)
while True:
choice = input("Do you want to hit? [y/n]: ")
if choice in ("Y","y"):
self._player.hit(self._deck.deal())
points = self._player.getPoints()
print ("Player:\n", self._player)
if points >= 21:
break
else:
break
playerPoints = self._player.getPoints()
if playerPoints> 21:
print ("You bust and lose")
else:
self._dealer.hit(self._deck)
print ("Dealer:\n", self._dealer)
dealerPoints=self._dealer.getpoints()
if dealerPoints >21:
print ("Dealer busts you win")
elif dealerPoints>playerPoints:
print ("Dealer wins")
elif dealerPoints<playerPoints and playerPoints <= 21:
print ("You win")
elif dealerPoints == playerPoints:
if self._player.hasBlackjack() and not self._dealer.hasBlackjack():
print ("You win")
elif not self._player.hasBlackjack() and self._dealer.hasBlackjack():
print ("Dealer wins")
else:
print ("There is a tie")
Blackjack().play()
나는
Traceback (most recent call last):
File "C:\Users\Schuler\bj.py", line 151, in <module>
Blackjack().play()
File "C:\Users\Schuler\bj.py", line 117, in play
print ("Player:\n", self._player)
AttributeError: 'Blackjack' object has no attribute '_player'
내가 책에서 바로 모든 것을 복사 얻고 내가 잘못이 무엇인지 알아낼 수 없습니다.
_____ 편집 _____ 그래서
이 지적되었다 내가 그 고정 그래서 두 번 밑줄을 잊어 버렸습니다. 10 번 이상 더 뛰면 작은 철자 오류가 발견됩니다.
주문이 내가 아는 어떤 카지노를 좋아한다, 너무 이상하다. 표준 규칙은 다음과 같습니다. (1) 딜러 자연 : 플레이어 자연스런 푸시, 다른 사람은 잃고 게임 오버. (2) 선수가 쳤다. 원주민 지불. 흉상은 즉시 잃는다. (3) 딜러 히트. 흉상이라면 남아있는 모든 손을 지불하고 그렇지 않으면 더 좋은 총액을 지불하십시오. –
...이 코드가 교과서에서 나온 것이라면, 나는 그것이 나쁜 예라고 생각하기를 바랍니다. –
나쁜 예로 사용하지 마십시오. Kenneth A. Lambert의 프로그래밍 기초는 누구라도 신경 쓰면 책의 이름입니다. – wees