私は、オブジェクト指向プログラミングと実践カウンティングカードに慣れるために、Pythonで単純なブラックジャックシミュレータを作っています。シミュレータは、これまでAttributeError: 'NoneType'オブジェクトに属性 'pop'がありません
import random
cardvalues = {"1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7,
"8": 8, "9": 9, "10":10, "J": 10, "Q": 10, "K": 10, "A": 11}
class Shoe(object):
def __init__(self):
amount = input("how many decks do you want in the shoe?\n>")
self.shoe = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"] * amount * 4
self.shoe = random.shuffle(self.shoe)
def deal(self):
pcard1 = self.shoe.pop()
pcard2 = self.shoe.pop()
comcard1 = self.shoe.pop()
comcard2 = self.shoe.pop()
handworth = cardvalues[pcard1] + cardvalues[pcard2]
print "You have been dealt a {} and a {}. The value of your cards is {}".format(pcard1, pcard2, hadworth)
print "The dealer has a {} and an other card that's faced down.".format(comcard1)
class play(object):
def __init__(self):
print "welcome to blackjack simulator!"
print "You shall be playing at a 100 dollar minimum table, with a wallet of $5000,00"
my_shoe = Shoe()
my_shoe.deal()
if __name__ == '__main__':
play()
ために、次のようになり、エラーが、私はすぐにここでの問題は、ライン
self.shoe = random.shuffle(self.shoe)
は私の全体のself.shoeになっていることであることを発見した
AttributeError: 'NoneType' object has no attribute 'pop'
ましたそれをシャッフルする代わりにNoneにリストする。誰かがなぜこれが起こったのか、それをどう修正するのか説明してください。
私は問題を自分で解決しました。結局のところ、私は間違ったrandom.shuffleコマンドを使用しました。私が "self.shoe ="を削除すると、エラーなしで実行されました。
'_init_'は' __init__'でなければなりません。この場合は助けになるかどうかわかりませんが、リンターを使用しようとしましたか? Pycharmには組み込みコマンドラインがあり、 'pylint'を使うことができます。 – user1685095
あなたはprint文ではなくprint文を使用しています。つまり、Python 2.xを使用しています。言い訳はありません.3.1シリーズの最新のPython、つまり3.6.1からPythonを学ぶことは、最近始まっていません。 Python3を使った最新のチュートリアルを入手してください – Anthon
私はまた、 'amount'がShoeの' __init__'メソッドへの引数として渡されることをお勧めします – cosmosa